Speakeasy is a fullstack real-time chat and video calling platform designed for language exchange and social connection. It features:
- 🌐 Real-time messaging with typing indicators & reactions
- 📹 1-on-1 and group video calls with screen sharing & recording
- 🔐 Secure JWT authentication & protected routes
- 🌍 Language exchange with user profiles and friend system
- 🎨 32 unique UI themes (customizable)
- ⚡ Modern tech stack: React, Express, MongoDB, TailwindCSS, TanStack Query
- 🧠 Global state management with Zustand
- 🚨 Robust error handling (frontend & backend)
- 🚀 Ready for free deployment
🧪 .env Setup
Backend (/backend)
PORT=5001
MONGO_URI=your_mongo_uri
STEAM_API_KEY=your_steam_api_key
STEAM_API_SECRET=your_steam_api_secret
JWT_SECRET_KEY=your_jwt_secret
NODE_ENV=development
Frontend (/frontend)
VITE_STREAM_API_KEY=your_stream_api_key
🔧 Run the Backend
cd backend
npm install
npm run dev💻 Run the Frontend
cd frontend
npm install
npm run devchat-and-video-calls-platform/
├── backend/ # Express.js backend API
│ ├── src/
│ │ ├── controllers/ # Route controllers (auth, chat, user)
│ │ ├── lib/ # DB and stream utilities
│ │ ├── middleware/ # Auth middleware
│ │ ├── models/ # Mongoose models (User, FriendRequest)
│ │ ├── routes/ # API route definitions
│ │ └── server.js # App entry point
│ ├── package.json
│ └── ...
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── constants/ # App constants
│ │ ├── hooks/ # Custom React hooks
│ │ ├── lib/ # API/axios/utils
│ │ ├── pages/ # App pages (Home, Friends, Chat, etc.)
│ │ ├── store/ # Zustand stores
│ │ └── ...
│ ├── public/ # Static assets
│ ├── index.html
│ ├── package.json
│ └── ...
├── README.md # Project documentation
└── ...
Base URL: http://localhost:5001/api
- Auth
POST /api/auth/signup— Register new userPOST /api/auth/login— LoginGET /api/auth/me— Get current user
- User & Friends
GET /api/users/friends— Get my friendsPOST /api/users/friend-request/:id— Send friend requestPUT /api/users/friend-request/:id/accept— Accept friend requestGET /api/users/friend-requests— Get incoming/accepted requestsGET /api/users/outgoing-friend-requests— Get outgoing requestsGET /api/users/recommended— Get recommended users
- Chat
GET /api/chat/token— Get chat/video token
All protected routes require authentication (JWT in cookies).
Name: JEEVAN RUSHI SUDULA
Email: [email protected]
Feel free to reach out for any queries, suggestions, or contributions!