A modern, full-stack video conferencing application with Microsoft Teams-inspired design. Built with React, Express.js, Socket.IO, MongoDB, and WebRTC.
- π¬ HD Video Conferencing: WebRTC-powered peer-to-peer video calls
- π¬ Real-time Chat: Instant messaging during video calls
- π Secure Authentication: JWT-based user authentication
- π± Responsive Design: Works on desktop, tablet, and mobile
- π¨ Modern UI: Microsoft Teams-inspired purple theme
- β‘ Real-time Communication: Socket.IO for instant updates
- π’ Room Management: Create and join meeting rooms with ease
- π User Dashboard: Personal dashboard with meeting history
This is a separated monorepo with independently deployable frontend and backend:
shubh-meet/
βββ client/ # React Frontend (Port 8000)
βββ server/ # Express Backend (Port 4001)
βββ package.json # Workspace coordinator
βββ README.md # This file
- Framework: React 16.13 with Redux
- Styling: Bootstrap 5 + Custom CSS
- Real-time: Socket.IO Client
- Routing: React Router
- Build Tool: Create React App
- Framework: Express.js with Node.js
- Database: MongoDB with Mongoose
- Authentication: Passport.js + JWT
- Real-time: Socket.IO Server
- Security: CORS, XSS protection
- Node.js >= 12.16.3
- MongoDB (running locally or remote)
- Git
git clone https://github.com/your-username/shubh-meet.git
cd shubh-meet
npm run install:all
Backend Configuration (server/.env
):
NODE_ENV=development
PORT=4001
MONGODB_URI=mongodb://localhost:27017/video
JWT_SECRET=your-secret-key-here
Frontend Configuration (client/.env.local
):
REACT_APP_API_URL=http://localhost:4001/api
# Start both frontend and backend simultaneously
npm run dev
# Or start them separately:
npm run start:server # Backend on http://localhost:4001
npm run start:client # Frontend on http://localhost:8000
Visit http://localhost:8000 in your browser.
npm run install:all
- Install dependencies for both client and servernpm run dev
- Start both frontend and backend in development modenpm run start:both
- Same as devnpm run start:client
- Start only frontendnpm run start:server
- Start only backendnpm run build
- Build frontend for productionnpm run test
- Run tests for both client and servernpm run clean
- Remove all node_modules directories
cd client
npm start # Development server
npm run build # Production build
npm test # Run tests
cd server
npm run dev # Development with nodemon
npm start # Production server
npm test # Run tests
POST /api/users/signup
- User registrationPOST /api/users/login
- User loginGET /api/users/checkJWTToken
- Token validation
GET /api/groups
- Get user groupsPOST /api/groups
- Create new groupGET /api/groups/:groupId
- Get group details
GET /api/health
- Server status
join-call
- Join video conference roomsignal
- WebRTC signaling datachat-message
- Send chat message
user-joined
- User joined the roomuser-left
- User left the roomchat-message
- Receive chat messagesignal
- WebRTC signaling response
- Primary:
#6264a7
(Microsoft Teams Purple) - Success:
#107c10
- Error:
#d13438
- Text:
#2c3e50
- Background:
#f8faff
to#e8f2ff
- Modern Button System: Hover animations with translateY effects
- Card-based Layout: Shadow and gradient designs
- Modal System: Backdrop blur with slide animations
- Responsive Grid: Flexbox-based responsive layout
- XSS Protection: Input sanitization using xss library
- CORS Configuration: Controlled cross-origin access
- JWT Authentication: Secure token-based authentication
- Input Validation: All user inputs validated and sanitized
- Environment Variables: Sensitive data stored in environment files
cd client
npm run build
# Deploy the 'build' folder
cd server
# Set environment variables in your hosting platform
# Deploy the server directory
Backend:
NODE_ENV=production
PORT=4001
MONGODB_URI=your_mongodb_atlas_url
JWT_SECRET=your_production_secret
Frontend:
REACT_APP_API_URL=https://your-backend-domain.com/api
- Chrome: Latest 2 versions β
- Firefox: Latest 2 versions β
- Safari: Latest 2 versions β
- Edge: Latest 2 versions β
-
"Cannot connect to backend"
- Ensure backend server is running on port 4001
- Check REACT_APP_API_URL in frontend environment
-
"Database connection failed"
- Verify MongoDB is running
- Check MONGODB_URI in backend environment
-
"Socket.IO connection errors"
- Ensure CORS is properly configured
- Check browser console for WebSocket errors
-
"Build fails"
- Clear node_modules:
npm run clean
- Reinstall dependencies:
npm run install:all
- Check Node.js version compatibility
- Clear node_modules:
Enable debug logging in development:
# Backend
DEBUG=* npm run dev
# Frontend
REACT_APP_DEBUG_MODE=true npm start
- Frontend: Component-based React architecture
- Backend: RESTful API with Express.js
- Database: MongoDB with Mongoose ODM
- Real-time: Socket.IO for bidirectional communication
- Frontend: Add components in
/client/src/Components
- Backend: Add routes in
/server/routes
- Database: Add models in
/server/models
This project is licensed under the ISC License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
If you encounter any issues or have questions:
- Check the Troubleshooting section
- Search existing GitHub Issues
- Create a new issue with detailed information
- Microsoft Teams for design inspiration
- WebRTC community for real-time communication protocols
- Socket.IO team for excellent real-time framework
- React and Express.js communities
Made with β€οΈ by Shubhank Kulshrestha