Skip to content

Mohammed-Asfar/zenith-buzzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zenith Buzzer Logo

Zenith Buzzer

Offline Quiz Buzzer System — a plug-and-play desktop app for quiz competitions.

Electron Socket.IO TailwindCSS License


Overview

Zenith Buzzer is an offline-first desktop application built for live quiz competitions. The host runs the app on their laptop, and players join from their phones via the local Wi-Fi network — no internet required.

The admin controls rounds, buzzer timing, and scoring from a sleek dashboard, while players get a mobile-optimized buzzer page with real-time feedback.


Features

Feature Description
Offline-First Works entirely over local Wi-Fi — zero internet dependency
QR Code Join Players scan a QR code to join instantly from any phone browser
Real-Time Buzzing Sub-50ms latency buzz detection with millisecond-accurate rankings
Round Management Open, close, reset, and advance rounds from the admin panel
Live Rankings Automatic 1st/2nd/3rd placement with live leaderboard
Timer Built-in countdown timer with configurable duration
Sound Effects Audio cues for round start, buzzes, and timer end (toggleable)
Name Change Requests Players can request team name changes; admin approves/denies
Lock Joins Lock the lobby to prevent new players mid-round
Data Export Export results as CSV or JSON
Branded UI ZENITH'26 dark gold/bronze theme with SVG iconography

Screenshots

Run the app to see the full UI. Admin panel features a dark theme with gold accents, round controls, timer, rankings, and player management.


Tech Stack


Getting Started

Prerequisites

Install

git clone https://github.com/Mohammed-Asfar/zenith-buzzer.git
cd zenith-buzzer
npm install

Run (Development)

npm run start

This builds the CSS and launches the Electron app. The admin panel opens automatically. Players can join by scanning the QR code or navigating to the displayed URL on the same Wi-Fi network.

Build (Production)

npm run build

Outputs a Windows installer to dist/. Requires Developer Mode enabled or an elevated terminal for code signing symlinks.


Project Structure

zenith-buzzer/
├── build/                  # Build resources (icon.ico, icon.png)
├── src/
│   ├── admin/              # Admin panel (HTML, CSS, JS)
│   │   ├── index.html      # Admin dashboard UI
│   │   ├── admin.css        # Source styles (Tailwind)
│   │   ├── admin.js         # Admin logic & Socket.IO handlers
│   │   └── dist/           # Compiled CSS output
│   ├── assets/             # Shared assets (logo, icons)
│   ├── main/               # Electron main process
│   │   ├── main.js         # App entry point & window creation
│   │   ├── server.js       # Express + Socket.IO server
│   │   ├── preload.js      # Context bridge (IPC)
│   │   ├── network.js      # LAN IP detection
│   │   └── export.js       # CSV/JSON export logic
│   ├── player/             # Player mobile interface
│   │   ├── index.html      # Buzzer page UI
│   │   ├── player.css      # Source styles (Tailwind)
│   │   ├── player.js       # Player logic & Socket.IO handlers
│   │   └── dist/           # Compiled CSS output
│   └── shared/
│       └── events.js       # Shared Socket.IO event constants
└── package.json

How It Works

┌─────────────────┐         Wi-Fi LAN          ┌──────────────────┐
│   Admin Panel    │◄──── Socket.IO ────────►   │  Express Server  │
│   (Electron)     │                            │  (port 3000)     │
└─────────────────┘                             └────────┬─────────┘
                                                         │
                                                    Socket.IO
                                                         │
                                          ┌──────────────┼──────────────┐
                                          ▼              ▼              ▼
                                     ┌─────────┐   ┌─────────┐   ┌─────────┐
                                     │ Player 1 │   │ Player 2 │   │ Player N │
                                     │ (Phone)  │   │ (Phone)  │   │ (Phone)  │
                                     └─────────┘   └─────────┘   └─────────┘
  1. The Electron app starts an Express + Socket.IO server on the local network
  2. Players join by scanning a QR code or entering the URL in their phone browser
  3. The admin opens/closes buzzer rounds from the dashboard
  4. Players tap the buzzer — the server ranks them by timestamp
  5. Results are displayed live on both admin and player screens

Available Scripts

Command Description
npm run start Build CSS + launch Electron app
npm run dev Launch Electron without CSS build
npm run build Build CSS + package as Windows installer
npm run build:css Build admin + player CSS
npm run watch:css:admin Watch & rebuild admin CSS
npm run watch:css:player Watch & rebuild player CSS

License

MIT — Made for ZENITH'26

About

Zenith Buzzer is an offline-first desktop application built for live quiz competitions. The host runs the app on their laptop, and players join from their phones via the local Wi-Fi network — no internet required.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors