Convox is a modern full-stack web application designed to help users connect and communicate through real-time chat and high-quality video calling. Built using cutting-edge technologies, Convox delivers a seamless and intuitive communication experience.
Beyond messaging, Convox also serves as a language exchange platform where users can share their native language and specify the language they want to learn. The platform enables users to teach and learn from each other through real-time chat and video conversations, making language learning interactive and practical.
Key features include real-time messaging, secure video calling, and a complete friend system that allows users to send, receive, and accept friend requests β helping build a global community of learners.
- π Secure Authentication - JWT-based authentication with bcrypt password hashing
- π¬ Real-Time Chat - Instant messaging powered by Stream Chat SDK
- π Video Calls - High-quality video calling using Stream Video SDK
- π₯ Friend Management - Add friends, send/receive friend requests, and manage contacts
- π Theme Support - Light and dark mode with persistent theme preferences
- π± Responsive Design - Mobile-friendly UI with Tailwind CSS and DaisyUI
- β‘ Real-Time Updates - Instant notifications for messages and friend requests
- π― State Management - Efficient state handling with Zustand
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB with Mongoose ODM
- Authentication: JWT (jsonwebtoken) and bcryptjs
- Real-Time: Stream Chat SDK
- Middleware: CORS, Cookie Parser
- Library: React 19
- Build Tool: Vite
- Styling: Tailwind CSS + DaisyUI
- HTTP Client: Axios
- State Management: Zustand
- Real-Time Chat: Stream Chat React SDK
- Video Calls: Stream Video React SDK
- Data Fetching: TanStack React Query
- UI Components: Lucide React Icons
- Notifications: React Hot Toast
- Routing: React Router v7
Convox/
βββ backend/
β βββ src/
β β βββ server.js # Express server setup
β β βββ controllers/ # Request handlers
β β β βββ auth.controller.js # Authentication logic
β β β βββ chat.controller.js # Chat operations
β β β βββ user.controller.js # User management
β β βββ models/ # MongoDB schemas
β β β βββ User.js
β β β βββ FriendRequest.js
β β βββ routes/ # API endpoints
β β βββ middleware/ # Custom middleware
β β βββ lib/ # Utilities
β β βββ db.js # Database connection
β β βββ stream.js # Stream SDK setup
β βββ package.json
β βββ .env
βββ frontend/
β βββ src/
β β βββ pages/ # Page components
β β βββ components/ # Reusable components
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utilities & API client
β β βββ store/ # Zustand stores
β β βββ constants/ # App constants
β βββ index.html
β βββ package.json
β βββ vite.config.js
β βββ tailwind.config.js
β βββ .env
βββ README.md
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
- Stream.io Account (for chat and video features)
-
Clone the repository
git clone https://github.com/7vik2005/Convox.git cd Convox -
Backend Setup
cd backend npm installCreate a
.envfile in the backend directory:PORT=5001 MONGODB_URI=mongodb://localhost:27017/convox JWT_SECRET=your_jwt_secret_key NODE_ENV=development STREAM_API_KEY=your_stream_api_key STREAM_API_SECRET=your_stream_api_secret
-
Frontend Setup
cd ../frontend npm installCreate a
.envfile in the frontend directory:VITE_STREAM_API_KEY=your_stream_api_key VITE_BACKEND_URL=http://localhost:5001
Terminal 1 - Backend:
cd backend
npm run devThe server will start on http://localhost:5001
Terminal 2 - Frontend:
cd frontend
npm run devThe application will open at http://localhost:5173
npm run dev- Start development server with nodemonnpm start- Start production server
npm run dev- Start Vite development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
POST /api/auth/sign-up- Register a new userPOST /api/auth/login- Login userPOST /api/auth/logout- Logout user
GET /api/users- Get all usersGET /api/users/:userId- Get user profilePUT /api/users/:userId- Update user profilePOST /api/users/send-friend-request- Send friend requestPOST /api/users/accept-friend-request- Accept friend request
GET /api/chat/token- Get Stream chat tokenGET /api/chat/conversations- Get user conversations
- Secure user registration and login
- JWT token-based session management
- Password encryption using bcryptjs
- HTTP-only cookies for enhanced security
- Instant messaging interface
- Message history
- Online status indicators
- Read receipts
- One-to-one video calls
- Screen sharing capability
- High-quality audio/video streaming
- Send/receive friend requests
- Accept or decline requests
- Maintain friends list
- View online status
- JWT authentication for API protection
- Password hashing with bcryptjs
- CORS configuration for cross-origin requests
- HTTP-only cookies for session management
- Environment variables for sensitive data
Issue: CORS error
- Ensure backend CORS origin matches your frontend URL
- Check that credentials are properly configured
Issue: MongoDB connection failed
- Verify MongoDB service is running
- Check connection string in .env
Issue: Stream SDK not connecting
- Verify Stream API key and secret
- Ensure Stream credentials are valid in .env files
For questions, issues, or suggestions, please create an issue in the repository.
This project is licensed under the MIT License - see the LICENSE file for details.