- Architecture
- What Kind of Meetings You Can Have
- Key Features
- Usage
- Project Evolution
- Security
- Tech Stack
HaamCall uses a real-time SFU architecture to keep meetings smooth as participants grow:
- Web app for meeting experience
- Backend service for room/session management
- LiveKit SFU for real-time audio/video/screen share transport
- SFU-based media routing (LiveKit) improves quality for group calls by avoiding full mesh peer-to-peer overhead.
- Adaptive video grid + active speaker highlighting keeps focus clear in larger rooms.
- Reconnection handling + connection banners improves reliability under unstable networks.
- TURN support helps participants behind strict NAT/firewalls join more successfully.
- State isolation with Zustand stores keeps room UI responsive and predictable during rapid media events.
- 1:1 quick calls for instant check-ins.
- Small team standups with camera/mic and chat.
- Larger collaboration rooms with adaptive participant layout.
- Presentation-style sessions with screen sharing.
- Async-friendly sessions using file upload/download and in-room chat.
- Instant room creation + join by link
- No account required for regular meetings
- Pre-join camera/mic readiness check
- In-room controls: mic, camera, screen share, leave
- Real-time chat and participant list
- File sharing inside meeting rooms
- Responsive UI for desktop and mobile
Using HaamCall is designed to be simple and fast.
- Open the HaamCall landing page.
- Click Create Room.
- Allow camera and microphone access if prompted.
- Share the generated room link with other participants.
- Participants can join instantly using the link — no account required.
- Open the shared room link.
- Complete the pre‑join camera and microphone check.
- Click Join Meeting to enter the room.
HaamCall can be installed as a Progressive Web App (PWA) for a more native experience.
Steps:
- Open HaamCall in a supported browser (Chrome, Edge, etc.).
- Click the Install button in the browser address bar.
- Launch HaamCall directly from your desktop or app launcher.
The PWA version provides:
- Faster startup
- Standalone window mode
- Better meeting workflow without browser UI distractions
HaamCall has evolved through several major iterations as the architecture and feature set improved.
| Version | Key Changes |
|---|---|
| v1 | Initial prototype for browser-based meetings. |
| v2 | Switched to WebRTC peer-to-peer (P2P) connections using vanilla JavaScript. Added file sharing inside meeting rooms. |
| v3 | Migrated from P2P to SFU architecture using LiveKit for better scalability. Rebuilt the entire UI using React + Vite + Tailwind and introduced Light Theme alongside Dark Theme. |
Moving from peer-to-peer (mesh) to SFU significantly improves performance in group meetings.
In P2P:
- Each participant sends media to every other participant.
- Bandwidth usage grows quickly as the room size increases.
With SFU (LiveKit):
- Each participant sends a single media stream to the server.
- The server forwards optimized streams to participants.
This allows larger rooms, more stable connections, and better overall call quality.
- Server-side room and session management (no direct client trust)
- Admin panel protected with credential login and expiring sessions
- TURN support for secure/reliable connectivity across restrictive networks
- Token-based room access issued by the backend before joining media sessions
- Input validation and error boundaries for safer request/UI handling
- Frontend: React, TypeScript, Vite, Tailwind CSS, Zustand
- Backend: NestJS, TypeScript
- Real-time media: LiveKit (SFU), WebRTC, TURN (coturn)
- Infrastructure: Docker, Docker Compose

