A full-stack web application that allows users to create and join public or private real-time meetings with messaging, video chat, screen sharing, and file sharing.
Frontend:
- React + Vite
- Axios
- React Router DOM
- Socket.IO Client
Backend:
- Node.js + Express
- MongoDB + Mongoose
- JWT (Authentication)
- Socket.IO (WebSockets)
your-app/
├── client/ # React frontend
│ ├── public/
│ └── src/
│ ├── components/
│ ├── pages/
│ ├── services/
│ ├── sockets/
│ ├── context/
│ └── App.jsx
├── server/ # Express backend
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ ├── middleware/
│ ├── sockets/
│ ├── config/
│ ├── utils/
│ ├── app.js
│ └── server.js
├── .gitignore
└── README.md
- Node.js (v16+)
- MongoDB local or MongoDB Atlas
git clone https://github.com/yourusername/your-repo-name.git
cd your-repo-name
cd server
npm install
PORT=5000
MONGO_URI=mongodb+srv://<user>:<pass>@cluster.mongodb.net/dbname
JWT_SECRET=your_jwt_secret_key
npm run dev
cd ../client
npm install
VITE_API_URL=http://localhost:5000/api
VITE_SOCKET_SERVER=http://localhost:5000
npm run dev
Method | Endpoint | Description |
---|---|---|
POST | /api/auth/signup | Register a new user |
POST | /api/auth/login | Login and get token |
POST | /api/meeting/create | Create a meeting |
GET | /api/meeting/public | Get public meetings |
POST | /api/meeting/join | Join a meeting |
Event | Payload | Description |
---|---|---|
user:join |
{ userId, meetingId } | User joins meeting |
message:new |
{ sender, content } | Chat message sent |
user:mute |
{ userId } | Host mutes user |
screen:share |
{ stream } | Start screen share |
user:kick |
{ targetId } | Host kicks a user |
npm run dev # start dev server with nodemon
npm run dev # start Vite dev server
In both
server/
andclient/
node_modules/
.env
uploads/
dist/
build/
.DS_Store
- Frontend: Vercel
- Backend: Render / Railway
- Database: MongoDB Atlas
- Auth system (JWT)
- Meeting creation + joining
- Real-time chat (Socket.IO)
- WebRTC video/audio
- Screen sharing
- File uploads (AWS or local)
- Host controls panel
- Recording support
Built with 💻 & ❤️ by TeamWork