सभा (Sabha) is a Sanskrit word meaning assembly, council, or congregation.
A high-performance, Zoom-like real-time video conferencing web application engineered to run entirely on 100% free-tier cloud resources with a dual-tier hybrid media engine: LiveKit Cloud SFU (50 to 100+ participants) with autonomous WebRTC Full-Mesh fallback.
- 🔒 Mandatory Google Authentication & Verified Profiles: Secure login enforcing Google verified identities with immutable display names and login IP auditing (
/api/auth/record-login). - 👑 Host (सभापति) & Co-Host (सह-सभापति) Controls:
- Database Host Verification: Authenticated via Firestore (
room.hostId === user.uid), eliminating insecure URL spoofing. - Co-Host Delegation: Promote trusted attendees to co-hosts with full moderation privileges.
- Mute All & Individual Mute: Instantly silence noisy microphones.
- Kick Participant: Remove disruptive users from the assembly with immediate broadcast signals.
- Lock Sabha: Lock room to prevent unauthorized new entries.
- Require Cameras: Mandate all participants keep their webcams active.
- Security Permissions: Toggle participant rights to screen share, chat, or unmute.
- Database Host Verification: Authenticated via Firestore (
- 🚪 Waiting Room & Knocking System: Attendees wait in a stylized lobby until admitted; hosts/co-hosts receive real-time knocking banners with 1-click
[Admit],[Deny], and[Admit all]. - 🎙️ Live Speech Transcription & Closed Captions (CC): Zero-cost browser Web Speech API continuous transcription with real-time speaker attribution and toggleable floating subtitles overlay.
- 🤖 AI Meeting Summaries (Google Gemini): Automatic structured executive overview, key discussion points, and action items generated via Gemini 3 Flash when the meeting concludes.
- ✉️ Automated Zoho Email Delivery: Host and co-hosts receive the executive notes with the complete verbatim transcript attached as
sabha-[roomId]-transcript.txt; all attendees receive the summary notes directly in their inbox. - 📐 Zoom-Style Multi-View Layout: Seamless switching between Gallery View, Active Speaker View, and Multi-Speaker View with top-bar dropdown and fullscreen controls.
- 💻 Spotlight Presentation Stage (Screen Sharing): Dedicated presentation stage rendering high-fidelity screen shares with
object-contain, presenter header badge, participant filmstrip, and 1-click "Stop Sharing". - 💬 In-Meeting Chat: Public messages to everyone or direct 1-on-1 private messages with live unread indicators.
- 🎨 Interactive Sabha Whiteboard: Brainstorm together with multi-color drawing canvas, stroke controls, 1-click PNG export, and close board action.
- ⏺️ In-Browser Meeting Recording: Record video & audio directly via the browser's
MediaRecorderAPI into downloadable.webmfiles with $0 cloud recording fees. - ✋ Hand Raising & Reactions: Raise hand queue for orderly assemblies + floating emoji reactions (👍, ❤️, 👏, 😂, 🎉, 🚀) with celebratory confetti.
- 🎙️ Active Speaker Detection: Glowing emerald audio halo around whoever is actively speaking using Web Audio API frequency analysis.
- 🚪 Green Room Lobby: Pre-meeting preview of your webcam and live audio visualizer; cleanly releases OS hardware handles on join for mobile Android/desktop resilience.
- 🔗 Clean Invite Sharing: Clean invite URLs (
/room/[roomId]) with Web Share API, WhatsApp 1-click, and animated copy button.
Sabha uses an intelligent hybrid engine that combines LiveKit Cloud SFU with Full-Mesh WebRTC:
| Mode | Capacity | Description |
|---|---|---|
| LiveKit SFU Mode | 50 to 100+ people | Ingests 1 stream per peer and dynamically fans out with Dynacast and adaptive bitrate. |
| WebRTC Mesh Mode | 4 to 8 people | Autonomous fallback using Google's free STUN servers and Firebase Firestore signaling. |
| Concurrent Meetings Across App | Thousands / day | Firebase Firestore Free Spark Plan provides 50,000 document reads/day and 20,000 writes/day, and Vercel provides 100 GB free bandwidth/month. |
- Frontend & Routing: Next.js 16 (App Router, TypeScript, React 19, Turbopack)
- Styling: Tailwind CSS v4 + Lucide Icons + Glassmorphism HUD
- Real-Time Signaling: Firebase Firestore + LiveKit Cloud SFU (or automatic local BroadcastChannel fallback)
- Authentication & Auditing: Firebase Google Authentication + Serverless IP Audit Log
- AI Intelligence: Google Gemini API (
gemini-3-flash-previewvia@google/genai) - Email Delivery: Zoho Mail SMTP (
nodemailer) with attachments - Media Engine: Hybrid LiveKit Cloud SFU + Native WebRTC (
RTCPeerConnection,getUserMedia,getDisplayMedia,Web Audio API) - Hosting: Vercel (Hobby Tier: $0.00 / month forever)
- Database: Firebase (Spark Tier: $0.00 / month forever)
git clone https://github.com/Harshjsh02/Sabha-.git
cd Sabha-
npm installCreate a .env.local file (or copy .env.example):
# Firebase Free Spark Configuration
NEXT_PUBLIC_FIREBASE_API_KEY=AIzaSy...
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your-app.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your-app
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your-app.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=1234567890
NEXT_PUBLIC_FIREBASE_APP_ID=1:1234567890:web:...
# LiveKit Cloud SFU (Free 50GB Tier)
LIVEKIT_URL=wss://your-project.livekit.cloud
NEXT_PUBLIC_LIVEKIT_URL=wss://your-project.livekit.cloud
LIVEKIT_API_KEY=your_livekit_api_key
LIVEKIT_API_SECRET=your_livekit_api_secret
# Google Gemini AI Summarization
GEMINI_API_KEY=your_gemini_api_key
# Zoho Mail SMTP Settings
ZOHO_MAIL_USER=your_email@domain.com
ZOHO_MAIL_PASS="your_password"
ZOHO_MAIL_HOST=smtp.zoho.in
ZOHO_MAIL_PORT=465npm run devOpen http://localhost:3000 to view your Sabha instance.
For comprehensive architectural, engineering, security, and product deep-dives, consult the following specifications:
| Document | Purpose & Scope |
|---|---|
| 📖 Product Master Specification (docs/product.md) | Comprehensive 21-section end-to-end product & system architecture |
| 🧠 Development Context (docs/context.md) | Current phase, tech stack, state management & edge case handling |
| 🤖 AI Pair Programming Guide (AGENTS.md) | System prompt, core principles, glassmorphic styling & workflows |
| 📋 Product Requirements Document (PRD) | Problem validation, Zoom parity requirements, feature sets & NFRs |
| 🏗️ System Architecture | High-level topology, LiveKit SFU + Mesh hybrid engine & sequence diagrams |
| 🔌 API & Signaling Specification | REST routes, LiveKit JWT token API, Firestore signaling payloads |
| 🗄️ Database & State Architecture | Firestore ERD, collection schemas, quotas, and security rules |
| 🌲 Codebase Tree Structure (docs/tree_structure.md) | Granular breakdown of files and directories across the project |
| 🛡️ Security & Privacy Guide | DTLS-SRTP encryption, zero-knowledge recording & threat mitigations |
| 🎙️ Audio Engine & Speaker Detection | Web Audio API decibel analysis, RMS calculation & active speaker halos |
| 🗺️ User Journeys & Interaction Flows | Host and attendee interaction journeys and escalation flows |
| 🚀 Investor & Community Pitch | Vision, market opportunity, unfair advantages & key milestones |
| 📋 Task Plan & Sprint Breakdown | Granular sprint-by-sprint implementation tracking |
| 🐛 Known Issues & Tech Debt | Log of bugs, dead code, and unresolved typing issues |
| 📝 Roadmap & Todo List | Immediate action items and upcoming features |
- Push your code to your GitHub repository (
https://github.com/Harshjsh02/Sabha-.git). - Go to Vercel Dashboard and click "Add New Project".
- Import your GitHub repository.
- Add the
NEXT_PUBLIC_FIREBASE_*andLIVEKIT_*environment variables in the Vercel dashboard. - Click Deploy! Your Sabha meeting app is live with SSL, global CDN, and $0 running costs.
Designed & Built with ❤️ by Harsh Joshi for the CodersHigh community.