SyncSpace is a full-stack video meeting app built with React, Vite, Express, MongoDB, and Socket.IO.
- User signup and login
- Creating and joining meeting rooms
- Live chat inside meetings
- Participant presence updates
- Recent room history
- Camera, microphone, and screen share controls
- Responsive meeting and dashboard UI
SyncSpace/
backend/
frontend/
backendcontains the Express API, MongoDB models, and Socket.IO serverfrontendcontains the React + Vite client
- Authentication with username and password
- Token-based session handling with a generated login token stored in the database and client storage
- Meeting room join flow with display name
- Live chat between participants
- Recent room history on the home page
- Meeting history page
- Camera-off avatar fallback tiles
- Screen sharing support
- React 19
- Vite
- React Router
- Axios
- Socket.IO Client
- Express
- MongoDB with Mongoose
- Socket.IO
- bcrypt
- Node.js 18+
- npm
- MongoDB connection string
Create a .env file inside backend/:
MONGO_URI=your_mongodb_connection_string
PORT=8000Optional .env file inside frontend/:
VITE_API_BASE_URL=http://localhost:8000If VITE_API_BASE_URL is not set, the frontend uses http://localhost:8000.
cd backend
npm installcd frontend
npm installOpen two terminals.
cd backend
npm run devcd frontend
npm run devFrontend runs on Vite's local dev server. Backend runs on http://localhost:8000.
npm run dev
npm startnpm run dev
npm run build
npm run preview
npm run lintBase route:
/api/v1/users
Endpoints:
POST /registerPOST /loginPOST /add_to_activityGET /get_all_activity
Used for live meeting communication:
join-callsignalchat-messagemedia-stateuser-joineduser-left
- If you test two users on the same machine, one physical webcam may be locked by one browser at a time.
- In that case, the second participant can still join, chat, and appear with an avatar fallback tile.
- If socket behavior changes after backend edits, restart the backend server.
Frontend production build:
cd frontend
npm run buildThis project is set up as a mid-level Zoom-style meeting app with the following working flows:
- Auth
- Meeting join and create flow
- Live chat
- Room history
- Responsive UI
- Persistent meeting participants in database
- Better call quality and reconnection handling
- Invite sharing improvements
- Production deployment config