MeetRooms is an advanced web application designed for seamless real-time video conferencing, live chat functionality, and session tracking. Built with the MERN stack (MongoDB, Express.js, React.js, Node.js), it leverages WebRTC for peer-to-peer communication, providing high-quality interactive video calls. Key WebRTC components like ICE (Interactive Connectivity Establishment) ensure efficient connection negotiation, while SDP (Session Description Protocol) facilitates signaling between peers. The platform incorporates robust authentication, authorization, and session management to guarantee secure user interactions, making it a reliable and feature-rich solution for modern virtual communication needs.
- Peer-to-peer video communication.
- ICE (Interactive Connectivity Establishment) for connection negotiation.
- SDP (Session Description Protocol) for signaling between peers.
- Modern, responsive UI components for a professional user experience.
- Secure user session management with JSON Web Tokens (JWT).
- Video Conferencing: High-quality peer-to-peer video calls using WebRTC.
- Live Chat: Integrated instant messaging for seamless collaboration during calls.
- Ongoing Session Management: Tracks and displays active meetings for participants.
- Sign-Up: Requires a username, password, and name for user registration.
- Sign-In: Authenticates users via username and password.
- Token-Based Session Management: Employs secure token storage and management for user sessions.
- Sign-Out: Fully implemented logout functionality.
The application is deployed on Render, ensuring accessibility and high performance.
Category | Technology |
---|---|
Frontend Framework | React.js (Vite), Material-UI (MUI), CSS |
Backend Framework | Node.js, Express.js |
Real-Time Communication | WebRTC, Socket.IO, Socket.IO.CLIENT |
Authentication | JSON Web Tokens (JWT), Bcrypt, Crypto |
Database | MongoDB |
Deployment | Render |
MeetRooms/
├── Backend/
│ ├── node_modules/ # Backend dependencies
│ ├── src/
│ │ ├── controllers/ # API logic for handling requests
│ │ ├── models/ # Database models (e.g., User, Meeting)
│ │ ├── routes/ # API route handlers
│ │ └── .env # Environment variables for secure configuration
│ ├── app.js # Main backend server entry point
│ └── .env # Backend environment variables
├── Frontend/
│ ├── node_modules/ # Frontend dependencies
│ ├── public/ # Static assets and HTML templates
│ ├── src/
│ │ ├── assets/ # Images, fonts, and other static files
│ │ ├── contexts/ # Context API for state management
│ │ ├── pages/ # Major application pages
│ │ ├── styles/ # Global and component-level CSS/SCSS
│ │ ├── utils/ # Helper functions and utilities
│ │ ├── App.js # Main application component
│ │ ├── App.css # Application-wide styles
│ │ ├── index.js # React application entry point
│ │ ├── index.css # Global CSS styles
│ │ ├── environment.js # Configuration for environment variables
│ │ ├── setupTests.js # Jest setup for testing
│ │ ├── App.test.js # Unit tests for App component
│ │ ├── reportWebVitals.js # Performance monitoring setup
│ └── package.json # Frontend dependencies and scripts
├── .gitignore # Git ignored files
├── README.md # Documentation
git clone https://github.com/your-username/MeetRooms.git
cd MeetRooms
- Navigate to the
Backend
folder:cd Backend
- Install dependencies:
npm install
- Add a
.env
file:DATABASE_URI=<your_mongo_db_uri> JWT_SECRET=<your_jwt_secret> ICE_SERVERS=<your_ice_server_config>
- Start the backend server:
npm start
- Navigate to the
Frontend
folder:cd ../Frontend
- Install dependencies:
npm install
- Start the frontend server:
npm run dev
- The frontend will be available at
http://localhost:3000
. - The backend will run at
http://localhost:8080
.
Method | Endpoint | Description | Access |
---|---|---|---|
POST | /api/auth/signup |
Register a new user | Public |
POST | /api/auth/login |
Login to an existing account | Public |
Method | Endpoint | Description | Access |
---|---|---|---|
GET | /api/meetings |
Retrieve all ongoing meetings | Authenticated |
POST | /api/meetings |
Create a new meeting | Authenticated |
The project is deployed on Render and accessible at:
MeetRooms Deployment Link
- Screen Sharing: Enable users to share their screen during meetings.
- Recording: Provide functionality to record video meetings.
- Push Notifications: Notify users about upcoming or ongoing meetings.
- Mobile Responsiveness: Optimize UI for mobile devices.
Contributions are welcome! Follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b feature-branch
- Commit your changes:
git commit -m "Add feature"
- Push the branch:
git push origin feature-branch
- Open a Pull Request.
This project is licensed under the MIT License. See the LICENSE file for more details.
Vidhi Jindal
Thank you for taking the time to explore and review the MeetRooms project! I hope you find it engaging and insightful. Your interest and feedback are greatly appreciated. Feel free to contribute or reach out with any questions or suggestions. I’m excited to continue improving and evolving this project with the support of the developer community.
Happy coding!