Live video debates with audience voting and ELO rankings.
Pick a topic. Debate anyone. Let the crowd decide.
commongrounddebate.com
CommonGround is a live video debate platform where strangers argue face-to-face and the audience decides who wins. Think Omegle meets competitive debate — with rankings, clips, and zero censorship.
- Pick a topic — Browse trending topics or create your own
- Get matched — Our matchmaking system pairs you with someone who disagrees
- Debate live — Face-to-face video debate with structured rounds
- Audience votes — Viewers watch live and vote on who's winning
- ELO rankings — Win debates to climb the leaderboard
- Live 1v1 video debates powered by LiveKit WebRTC
- Real-time audience voting with margin-based ELO system
- Faction system — Join political/ideological factions and compete as a team
- Clip recording — Capture and share the best moments
- Challenge system — Call out specific users to debate
- Content moderation — AI-powered NSFW detection keeps things civil
- Structured formats — Open, timed rounds, Oxford-style debates
- Mobile-friendly — Debate or watch from any device
| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| Video | LiveKit (WebRTC) |
| Database | Supabase (PostgreSQL) |
| Auth | Supabase Auth |
| Cache / Queue | Upstash Redis |
| Moderation | TensorFlow.js + NSFWJS |
| Hosting | Vercel |
src/
├── app/
│ ├── (main)/ # Main app routes
│ │ ├── browse/ # Browse & watch debates
│ │ ├── challenge/ # Challenge other users
│ │ ├── clips/ # TikTok-style clips feed
│ │ ├── debate/[id]/ # Live debate room
│ │ ├── find/ # Matchmaking
│ │ ├── profile/ # User profiles & stats
│ │ ├── rankings/ # ELO leaderboards
│ │ └── stances/ # Faction explorer
│ ├── api/ # API routes
│ │ ├── matchmaking/ # Queue & pairing
│ │ ├── livekit/ # Video token generation
│ │ ├── votes/ # Voting & ELO calculation
│ │ ├── clips/ # Clip CRUD
│ │ ├── challenges/ # Challenge system
│ │ └── moderation/ # Content moderation
│ └── auth/ # Login & signup
├── components/
│ ├── debate/ # DebateRoom, LiveKitVideo, ClipRecorder
│ ├── browse/ # WatchClient, debate browser
│ └── matchmaking/ # FindDebate, queue UI
├── hooks/ # Custom React hooks
├── lib/ # Supabase clients, utilities
├── types/ # TypeScript definitions
└── utils/ # Helper functions
- Node.js 18+
- npm or yarn
- Supabase project
- LiveKit server
- Upstash Redis instance
-
Clone the repo:
git clone https://github.com/your-username/commonground.git cd commonground -
Install dependencies:
npm install
-
Copy the environment template and fill in your keys:
cp .env.example .env.local
-
Run the development server:
npm run dev
- Live site: commongrounddebate.com
- X: @CommonGrndLive
- TikTok: @commongrounddebate
- YouTube: @CommonGroundDebate
All rights reserved. This project is proprietary software.