A video conferencing system built around an SFU (Selective Forwarding Unit) architecture.
It uses WebRTC for real-time audio/video, WebSockets and gRPC for signaling, MongoDB for room and user state, and cookie-based authentication for secure session management.
Designed to support multi-party meetings with efficient media routing and a scalable backend.
- Multi-party video conferencing using WebRTC and SFU
- Real-time signaling over WebSockets and gRPC
- MongoDB for persisting room and user state
- Cookie-based authentication
- Frontend built with React
- Backend written in Go
Make sure you have the following installed on your system:
-
Update your
.envin/backend:- Run a local MongoDB instance.
- Add its connection URL and database name to
.env. - Configure the ports you want for the signaling and SFU servers.
-
Start the backend services:
cd backend go run cmd/signaling/main.go go run cmd/sfu/main.go
Start frontend:
cd frontend
yarn install
yarn devmkcert -install
mkcert -key-file dev.key -cert-file dev.crtThen update your key and cert url in your .env file in /backend for TLS configuration
To test on other devices, expose your local frontend with a free tunneling service:
cloudflared tunnel --url [your local frontend url]