← Ecosystem

JoeQuiz

quiz.giorgiopalermo.com in production

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
Screenshot of JoeQuiz