Connecto is a real-time voice calling application built using WebRTC, Socket.IO, and the MERN stack, designed with scalability in mind for future features like chat and video calling.
The project uses a monorepo architecture with shared validation logic and modern tooling.
- 🔊 Real-time voice calls using WebRTC
- ⚡ Instant signaling with Socket.IO
- 👥 Online/offline user detection (Redis)
- 📞 Incoming call accept / reject flow
- 🔄 Call lifecycle handling (ringing → connected → ended)
- 🔐 JWT-based authentication
- 📦 Shared validation schemas using Zod
- 🌐 Production-ready deployment (Vercel + Render)
- React (Vite)
- TypeScript
- Zustand (state management)
- React Router
- Socket.IO Client
- WebRTC
- Tailwind CSS
- Node.js
- Express
- Socket.IO
- MongoDB
- Redis (online user tracking)
- JWT Authentication
- ImageKit (media handling)
- Zod (validation)
- Client: Vercel
- Server: Render
- Monorepo: npm workspaces
npm installnpm run dev:clientnpm run dev:server- PORT=5000
- MONGO_URI=your_mongo_uri_here
- REDIS_URL=your_redis_url_here
- ACCESS_TOKEN_SECRET=your_access_token_secret_here
- REFRESH_TOKEN_SECRET=your_refresh_token_secret_here
- CLIENT_URL=http://localhost:5173
- IMAGEKIT_PUBLIC_KEY=your_imagekit_public_key_here
- IMAGEKIT_PRIVATE_KEY=your_imagekit_private_key_here
- IMAGEKIT_URL_ENDPOINT=your_imagekit_url_endpoint_here
- VITE_API_URL=http://localhost:5000