A peer-to-peer group video calling application built with SvelteKit (frontend), Spring Boot (backend), and Nginx (reverse proxy). Features real-time video/audio communication (full mesh) with secure HTTPS, and Dockerized deployment.
Note: Each room also supports multiple participants. All users in a room will connect to each other in a full mesh for group video calls.
flowchart TD
subgraph Client
A[Web Interface<br>Svelte 5]
B[WebRTC API]
C[STOMP/WebSocket Client]
end
subgraph Docker_Network
D[Nginx<br>80/443]
E[Spring Boot Backend<br>8000]
F[SvelteKit Frontend<br>3000]
end
subgraph External
G[STUN/TURN Server<br>3478]
end
A -- HTTP/WS --> D
C -- WebSocket --> D
D -- Proxy HTTP/WS --> E
D -- Serve Static --> F
B -- WebRTC --> G
WebRTC-Video-Call/
โ
โโโ backend/ # Spring Boot backend (Java)
โ โโโ src/
โ โโโ pom.xml
โ โโโ Dockerfile
โ
โโโ frontend/ # SvelteKit frontend (TypeScript)
โ โโโ src/
โ โโโ package.json
โ โโโ Dockerfile
โ โโโ .env.example
โ
โโโ nginx/ # Nginx reverse proxy config
โ โโโ nginx.conf
โ โโโ Dockerfile
โ โโโ ssl/
โ โโโ certificate.pem
โ โโโ private_key.pem
โ
โโโ docker-compose.yml # Multi-service orchestration
โโโ README.md
Clone the repository
git clone https://github.com/AnishSarkar22/WebRTC-Video-Call.git
cd WebRTC-Video-Call
Configure Environment
frontend/.env
(copy from .env.example
) and set your WebSocket URL if needed:VITE_WEBSOCKET_URL=wss://your-domain.com/ws
nginx/nginx.conf
and set your domain or use server_name _;
for all hosts.Create SSL Certificates (for HTTPS)
mkdir -p nginx/ssl
openssl req -x509 -newkey rsa:4096 -keyout nginx/ssl/private_key.pem -out nginx/ssl/certificate.pem -days 365 -nodes
Build and Start All Services
docker-compose up --build
Access the Application
http://localhost
https://localhost
backend/src/main/resources/application.properties
)socket.host=0.0.0.0
socket.port=8000
server.port=8000
server.address=0.0.0.0
frontend/.env
)VITE_WEBSOCKET_URL=wss://your-domain.com/ws
nginx/nginx.conf
)/ws
and API requests to backend (backend:8000
)frontend:3000
, 4173
, or 5173
)cd backend
./mvnw test
cd frontend
npm install
npm run test
nginx/ssl/
.This project is licensed under the MIT License.