JoeQuiz
A living-room multiplayer quiz: phones as buzzers, a TV as the shared screen, fourteen minigames. It behaves as if it were real time while running on any shared hosting.
The problem
The idea was a Buzz! night on PlayStation, not a reflex contest: ten people in the same room, each with their own phone. The constraint was hosting: no WebSockets, no always-on processes, an ordinary shared server next to other sites.
Existing platforms either need dedicated infrastructure or reduce everything to who presses first. JoeQuiz had to be fair on timing even with the jitter of a home WiFi.
How it works
Structure
Three screens, one per role: control for the host, play for whoever holds a phone, stage for the TV. Each one gets a view of the state built on purpose, and the players' view does not even contain the right answer. One round engine, fourteen configurations.
Usage flow
You open a room from a computer, the others join from their phones with a six-letter code, no app and no signup. A player picks topic and difficulty, the system draws the minigame. The rounds decide the starting time of the final, which runs until one player is left.
Technical choices
HTTP polling every half second with state in MySQL, an NTP-style clock sync to establish who really pressed first, questions delivered covered and revealed to everyone at the same instant. The game moves forward on the players' own requests; a cron covers the case where nobody is asking any more.
Known limits
Scores live in configuration and need retuning on real game nights: the most delicate value is the time floor of the final. The question bank covers five topics; music, TV series, sport and video games are still drafts.
Numbers
| Questions in the bank, over | 6,400 |
|---|---|
| Minigames, plus the final round | 14 |
| Automated checks, over | 850 |
| Schema tables | 35 |
| Lines of application code, approx. | 30,000 |
Stack
- PHP 8
- MariaDB
- JoeCMS
- JavaScript
- Polling HTTP
- Python