A full-stack video conferencing application built with the MERN stack, featuring real-time video/audio communication, chat functionality, and meeting management.
- Video Conferencing: Real-time video and audio communication using WebRTC
- User Authentication: Secure registration and login with JWT
- Meeting Management: Create, join, and manage meetings
- Host Controls:
- Force mute participants
- Remove participants
- End meetings
- Real-time Chat: In-meeting chat functionality
- Participant Management: Track and display meeting participants
- Dark Mode: Theme support with next-themes
- Responsive UI: Modern interface built with Tailwind CSS and shadcn/ui
- React 19 - UI library
- Vite - Build tool and dev server
- Redux Toolkit - State management
- React Router - Routing
- Socket.io Client - Real-time communication
- Simple Peer - WebRTC peer-to-peer connections
- Tailwind CSS - Styling
- shadcn/ui - UI components
- Framer Motion - Animations
- Axios - HTTP client
- Node.js - Runtime environment
- Express.js - Web framework
- Socket.io - WebSocket server
- MongoDB - Database
- Mongoose - ODM
- JWT - Authentication
- bcryptjs - Password hashing
- Multer - File upload handling
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (local or MongoDB Atlas account)
-
Clone the repository
git clone <repository-url> cd "MERN LinkUp"
-
Install server dependencies
cd server npm install -
Install client dependencies
cd ../client npm install
Create a .env file in the server directory:
PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
CLIENT_URL=http://localhost:5173The client should be configured to connect to your server URL. Update the API base URL in your client configuration files if needed.
-
Start the server
cd server npm run devThe server will run on
http://localhost:5000 -
Start the client (in a new terminal)
cd client npm run devThe client will run on
http://localhost:5173
-
Build the client
cd client npm run build -
Start the server
cd server npm start
MERN LinkUp/
βββ client/ # React frontend
β βββ src/
β β βββ api/ # API calls
β β βββ components/ # React components
β β βββ context/ # React context providers
β β βββ layouts/ # Layout components
β β βββ pages/ # Page components
β β βββ router/ # Routing configuration
β β βββ slices/ # Redux slices
β β βββ store/ # Redux store
β β βββ utils/ # Utility functions
β βββ public/ # Static assets
β βββ package.json
β
βββ server/ # Express backend
β βββ models/ # Mongoose models
β βββ routes/ # API routes
β βββ middlewere/ # Middleware functions
β βββ server.js # Server entry point
β βββ package.json
β
βββ README.md
POST /api/auth/register- Register a new userPOST /api/auth/login- Login userGET /api/auth/profile- Get user profile (protected)
POST /api/meetings- Create a new meetingGET /api/meetings/:id- Get meeting detailsGET /api/meetings- Get user's meetings
GET /api/chat/:meetingId- Get chat messages for a meetingPOST /api/chat- Send a chat message
join room- Join a meeting roomleave room- Leave a meeting roomsending signal- Send WebRTC offerreturning signal- Send WebRTC answersendMessage- Send chat messagemedia-update- Update media state (video/audio)host-force-mute- Host mutes a participanthost-remove-user- Host removes a participanthost-end-meeting- Host ends the meeting
all users- List of existing users in roomnew participant- New user joinedparticipant left- User left the roomuser joined- WebRTC offer receivedreceiving returned signal- WebRTC answer receivedreceiveMessage- New chat messageparticipant-media-update- Participant media state changedforce-mute- Force mute commandremoved-by-host- Removed by host notificationmeeting-ended- Meeting ended by host
The project includes Vercel configuration files for deployment:
- Client: Deploy to Vercel using
client/vercel.json - Server: Deploy to Vercel using
server/vercel.json
Make sure to set environment variables in your deployment platform.
npm start- Start production servernpm run dev- Start development server with nodemon
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the ISC License.
Built with β€οΈ using the MERN stack
Note: Make sure to configure your MongoDB connection string and JWT secret in the server .env file before running the application.