Real-Time Gameplay
Powered by SignalR for instant synchronisation across all connected devices – no refreshing required.
A free, open-source, self-hosted Jeopardy-style quiz game built with ASP.NET Core and React. Real-time buzzers, rich media questions, and a beautiful display view – all running in a single Docker container.
Powered by SignalR for instant synchronisation across all connected devices – no refreshing required.
Display – beautiful game board on the projector.
Remote – host control panel.
Buzzer – player buzzer on any phone.
Planner – offline editor for preparing boards.
Tracks buzz-in order with precise millisecond timestamps so there are never any arguments about who buzzed first.
Start an animated countdown (1–999 seconds) for any question. The timer sits in the corner of the Display so it never covers the question, and the buzzer is automatically deactivated when time runs out.
Standard text, image, image mozaik (progressive reveal), audio, and video questions – all supported out of the box.
Create your own categories, set point values (200–1000), upload media files, and tailor every question to your event.
Scores update automatically when the host awards or deducts points. Players see their standing update instantly.
The player whose turn it is to pick the next category is highlighted with a glowing orange border – no more arguments about whose turn it is. Hosts can manually hand over selection or hide the highlight entirely from the Setup screen.
A hall of fame that survives container restarts. It's displayed alongside the winner screen after every game.
Spin a wheel of all players, complete with names and avatars, to randomly pick someone for the next question, challenge, or tiebreaker. The wheel decelerates with a satisfying ease-out and reveals the chosen player on the Display.
Save and restore full game state in JSON. Reuse question packs across sessions or share them with friends.
Prepare entire quiz boards at /plan without touching a running game. Categories, questions, and uploaded media live in your browser (localStorage + IndexedDB) and export to a ZIP that imports straight into the Remote Control.
Deploy anywhere with one docker compose up command. Media uploads and highscores are stored in named volumes.
Open the Remote Control (/remote), add players, create categories, and write your questions. Choose a type for each question and upload any media files.
Display the Display View (/display) on a TV or projector. Each player opens the Buzzer (/buzzer) on their phone and selects their name.
Select a category and value from the board, reveal the question, and watch the buzzers light up. Award points, move on, and let the quiz engine handle the rest.
When all questions are answered the display shows the podium and updates the all-time highscore board automatically.
The fastest way to run Custom Quiz Host is with Docker Compose.
docker-compose.ymlservices:
custom-quiz-host:
image: ghcr.io/michamican/custom-quiz-host:latest
ports:
- "8080:8080"
volumes:
- uploads:/app/uploads
- highscores:/app/highscores
restart: unless-stopped
volumes:
uploads:
highscores:
docker compose up -d
http://localhost:8080/display
http://localhost:8080/remote
http://localhost:8080/buzzer
http://localhost:8080/plan
Want to hack on the code? You'll need .NET SDK 10.0+ and Node.js 20+.
git clone https://github.com/MichaMican/custom-quiz-host.git
cd custom-quiz-host/customquizhost.client
npm install
cd ../CustomQuizHost.Server
dotnet run
Custom Quiz Host is free and open-source. Star the repo to show your support and help others discover it.