About this project
This is a minimal, browser-based video calling tool for two people. No accounts, no app installs, no plug-ins — open the page, share the link, and talk. It is built on top of WebRTC, the open standard for real-time audio and video in the browser.
Why it exists
Most modern video calls are routed through corporate cloud infrastructure: your camera feed travels to a remote data center, is decoded, re-encoded, mixed, and sent back to the other participant. That makes group calls possible at scale, but it also means a third party always sits between you and the person you are talking to.
For a one-on-one conversation, none of that is necessary. Two browsers can talk to each other directly using WebRTC, with the server only doing the initial handshake. The result is lower latency, better quality on a good connection, and a much simpler privacy story.
This project was built as a small demonstration of how lean a modern video call can be: a single static HTML page, a tiny WebSocket signaling server in Node.js, and the WebRTC stack already living in your browser.
How it works (in plain English)
- You open the page. The browser generates a random room ID and adds it to the URL after the
#. - You share that link with the other person.
- When you click Join, your browser opens a WebSocket connection to the signaling server and asks to enter that room.
- When the second browser joins the same room, the server tells both sides "you can connect now."
- The two browsers exchange a small amount of network information (an "offer" and an "answer") through the server.
- After that, the call goes directly between the two browsers. The server is no longer in the path of your audio or video.
WebRTC media is encrypted by default using DTLS-SRTP, so even on the rare cases where a TURN relay must forward your packets (for example through a strict corporate firewall), the relay cannot decrypt them.
What it can do
- Two-person camera + microphone calls in the browser
- Screen sharing (with optional camera-in-corner layout)
- Mute / unmute, camera on / off, camera switching
- End-to-end encryption between the two peers
- A speaking indicator on the tile of whoever is talking
- Password-protected rooms
- Automatic reconnection on temporary network glitches
What it does not do
- Group calls with more than two people
- Call recording or saving video
- Persistent rooms or scheduled meetings
- Chat messages or file transfer
- Mobile push notifications
The technology
- WebRTC — the in-browser real-time media stack (VP9 video, Opus audio)
- Node.js — a tiny WebSocket signaling server (~200 lines of code)
- STUN servers from Google for NAT traversal
- A public TURN relay as a fallback when direct connection is not possible
- Self-hosted on a home server using port forwarding and a free dynamic DNS hostname
Contact
Questions, bug reports, or feedback: sumanbhadrasuman@gmail.com.