A secure, real-time messaging application with a Bauhaus-inspired minimal design. Built for small teams and personal use with full message sync between web and Android.
https://chatx.yashasvm.workers.dev/ (Old Link)
https://2.yashasvm.workers.dev/ (New Link)
- Real-time Messaging - Instant message delivery with live updates
- Video Calls - Free peer-to-peer HD video calling (1-on-1 and group calls)
- Voice Calls - Free peer-to-peer voice calling (1-on-1 and group calls)
- Typing Indicators - See when others are typing
- Online/Offline Status - Know who's available
- Read Receipts - Message delivery confirmation
- Group Chats - Create groups with multiple participants
- 1-on-1 Chats - Private direct messaging
- Cross-Platform Sync - Messages sync between web and Android app
- PWA Support - Install as an app on any device
- Native Android App - Full Android APK available
- Secure Authentication - Username/password login with session tokens
ChatX supports free video and voice calling using WebRTC:
- HD Video - Up to 1080p at 30fps video quality
- 1-on-1 Video Calls - Private video calls between two users
- Group Video Calls - Video calls with up to 6 participants (mesh topology)
- Camera Toggle - Turn your camera on/off during calls
- Mute/Unmute - Toggle your microphone during calls
- Picture-in-Picture - Minimize video call to floating window
- No Server Costs - Peer-to-peer connections using free STUN/TURN servers
- 1-on-1 Calls - Private voice calls between two users
- Group Calls - Voice calls with up to 6 participants (mesh topology)
- Mute/Unmute - Toggle your microphone during calls
- Call Notifications - Real-time incoming call alerts
- Click the video (๐น) or phone (๐) icon in any conversation header
- The other user(s) will see an incoming call notification
- Accept or decline the call
- Media is transmitted directly between browsers (P2P)
- Click the red end button to hang up
- WebRTC - Real-time peer-to-peer communication
- STUN Servers - Google's free STUN servers for NAT traversal
- TURN Servers - Free OpenRelay TURN servers for restrictive firewalls
- Mesh Topology - Direct connections between all participants (up to 6)
- Signaling - Uses Convex real-time database for WebRTC signaling
Note: Calls require camera/microphone permissions. Works best on modern browsers (Chrome, Firefox, Edge, Safari).
- React 18 - UI library
- TypeScript - Type-safe JavaScript
- Vite - Fast build tool and dev server
- Tailwind CSS v4 - Utility-first CSS framework
- Lucide React - Beautiful icons
- Convex - Real-time database with serverless functions
- Session-based Auth - Secure token authentication
- Capacitor - Native Android app wrapper
- PWA - Progressive Web App for cross-platform support
- Cloudflare Pages - Frontend hosting (free tier)
- Convex Cloud - Backend hosting
ChatX/
โโโ convex/ # Backend (Convex)
โ โโโ schema.ts # Database schema
โ โโโ auth.ts # Authentication functions
โ โโโ messages.ts # Message CRUD operations
โ โโโ conversations.ts # Conversation management
โ โโโ typing.ts # Typing indicators
โ โโโ voiceCalls.ts # Voice call signaling
โ โโโ users.ts # User queries
โโโ src/
โ โโโ components/ # React components
โ โ โโโ ChatLayout.tsx # Main layout
โ โ โโโ ChatView.tsx # Message view
โ โ โโโ Sidebar.tsx # Conversation list
โ โ โโโ LoginPage.tsx # Authentication UI
โ โ โโโ VoiceCallModal.tsx # Voice call UI
โ โ โโโ VideoCallModal.tsx # Video call UI
โ โ โโโ IncomingCallModal.tsx # Incoming call notification
โ โ โโโ ...
โ โโโ contexts/ # React contexts
โ โ โโโ AuthContext.tsx # Auth state management
โ โ โโโ ChatContext.tsx # Chat state management
โ โ โโโ VoiceCallContext.tsx # Voice call state
โ โโโ hooks/ # Custom React hooks
โ โ โโโ useWebRTC.ts # WebRTC connection management
โ โโโ App.tsx # Main app component
โ โโโ main.tsx # Entry point
โ โโโ index.css # Global styles & theme
โโโ public/
โ โโโ manifest.json # PWA manifest
โ โโโ sw.js # Service worker
โ โโโ chatx-logo.svg # App logo
โโโ App-files/ # Android app files
โ โโโ ChatX.apk # Android installer
โโโ index.html
- Node.js 18+
- npm or yarn
npm installCreate a Convex account at https://convex.dev, then:
npx convex devThis will:
- Prompt you to log in to Convex
- Create a new project
- Generate the
convex/_generatedfolder - Create
.env.localwith yourVITE_CONVEX_URL
Run both frontend and backend together:
npm run dev:allOr separately:
# Terminal 1 - Convex backend
npm run dev:backend
# Terminal 2 - Vite frontend
npm run devVisit http://localhost:5173
npx convex deploy-
Build the project:
set VITE_CONVEX_URL=https://your-project.convex.cloud npm run build -
Upload the
dist/folder to Cloudflare Pages -
Set environment variable in Cloudflare:
VITE_CONVEX_URL= your Convex production URL
- Download
ChatX.apkfrom theApp-files/folder - Transfer to your Android device
- Enable "Install from unknown sources" if prompted
- Install and open the app
# Build web assets
npm run build
# Sync to Android
npx cap sync android
# Build APK (requires Android Studio)
cd android
./gradlew assembleDebugThe APK will be at android/app/build/outputs/apk/debug/app-debug.apk
- Open the web app in Chrome
- Tap the menu (โฎ)
- Select "Install app" or "Add to Home screen"
- Open the web app in Safari
- Tap the Share button
- Select "Add to Home Screen"
Yashas VM Creator & Lead Developer |
Made by @Yashas.VM
Co-Powered by Claude