1a1c494ade165e00413af0e7e2df09a56a786876
Replit-Commit-Author: Agent Replit-Commit-Session-Id: 22590254-16a6-4e67-8db6-70bf23ec5efa Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: 480bdc5f-3460-4340-bad8-55c04b01e09d Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/3f3f1d57-54c5-43b3-bdea-ac659ef0a32c/22590254-16a6-4e67-8db6-70bf23ec5efa/PuWDZtN Replit-Helium-Checkpoint-Created: true
Buzzer
Real-time buzzer system for Jeopardy, Quiz Bowl, and anything else that needs a fair, fast buzzer. Self-hosted, zero frontend dependencies.
Written entirely by Claude (Anthropic).
Requirements
- Bun v1.0+
Usage
bun install
bun --hot run src/server.ts
Open http://localhost:3000. Create a room to host, or enter a room code to join.
How It Works
One moderator per room controls the buzzer, timer, and teams. Players join via a six-character code and buzz in by clicking or pressing Space. The moderator sees the full buzz order with millisecond deltas. Everything is configurable live, mid-game.
Teams are auto-named using the Greek alphabet and can scale from 2 to 64.
Moderator identity is verified server-side by a secret generated at room creation — players cannot escalate privileges.
Structure
src/
├── server.ts # HTTP + WebSocket server
├── rooms.ts # State, types, broadcast helpers
├── ws-handler.ts # Message routing
└── public/
├── index.html
├── styles.css
└── script.js
Languages
JavaScript
39.3%
CSS
32%
HTML
15.7%
TypeScript
13%