A Telegram client with a React web interface and a Node.js backend. It works via the GramJS library (MTProto) and can be packaged as a desktop application using Tauri.
- Phone number authentication with 2FA (cloud password) support
- Chat list with avatars and user status (online / last seen)
- Chat window: text messages, emoji, replies
- Voice and audio messages with a player, seeking, and waveform visualization
- Message pagination and context loading by clicking on a reply
- Real-time updates via SSE (Server-Sent Events)
- Client-side GET request caching (axios interceptors)
- Customizable interface accent color
- Node.js 16+
- Rust and Cargo (only for building the desktop version via Tauri)
- Get your
API_IDandAPI_HASHat my.telegram.org → API development tools. - Create a
.envfile in the project root:
API_ID=your_api_id
API_HASH=your_api_hash
PORT=3000 # frontend port (CRA)
SERVER_PORT=3001 # API server port
BROWSER=none # don't open the browser automatically- Install dependencies:
npm installStarts both the API server (:3001) and the frontend (:3000):
npm run devOpen in your browser: http://localhost:3000
npm startnpm run buildDevelopment mode:
npm run tauri devBuilding an installer:
npm run tauri buildReady binaries will appear in src-tauri/target/release/bundle/.
Important: the
.envand.telegram-sessionfiles must never be committed to the repository or made public.