Torna ai lavori
WEB APP2026

BuzzRoom

Un gioco da salotto che sincronizza master, grande schermo e telefoni sulla stessa rete locale.

Anteprima del progetto BuzzRoom

Ruolo

Product Designer & Full Stack Developer

Contesto

Progetto personale / open source

Stato

Completato

Stack / proof

buzzer realtime · master live control · TV + mobile

Il problema

Per organizzare una serata quiz servono spesso strumenti separati: domande su un computer, timer improvvisati, telefoni usati come buzzer e una classifica aggiornata a mano. Il risultato funziona solo finché qualcuno tiene insieme tutti i passaggi.

BuzzRoom nasce per riunire questa regia in un unico sistema locale, senza account per i giocatori e senza dipendere da un servizio cloud.

La soluzione

L'app divide l'esperienza in tre superfici coordinate:

  • Master — crea il quiz, avvia la stanza, sceglie il round e assegna i punti;
  • Screen — mostra domande, media, QR code, stato del buzzer e classifica su TV o proiettore;
  • Player — permette a ogni squadra di entrare dal proprio smartphone e rispondere o prenotarsi.

La partita resta sulla stessa rete Wi‑Fi: il server Node gestisce la sessione realtime e i client ricevono uno stato coerente mentre il gioco procede.

Cosa ho costruito

Il prodotto supporta sei modalità di round: buzzer, scelta multipla, vero/falso, list guessing, clue reveal e image slide. Il seed incluso prepara un quiz demo “Serata Italiana”, così il flusso può essere provato senza dover creare subito tutti i contenuti.

Controllo live del master durante un round buzzer

La parte difficile: lo stato realtime

Il client non decide chi ha premuto per primo e non assegna punti localmente. Gli eventi come BUZZ e SUBMIT_ANSWER arrivano al server, che valida la richiesta, aggiorna lo stato della stanza e lo invia agli altri dispositivi.

Questa scelta evita due problemi tipici dei giochi realtime:

  • race condition tra telefoni con latenza diversa;
  • interfacce divergenti tra pannello del master, schermo e giocatori.

Lo stato caldo vive in memoria per rispondere rapidamente; quiz e stanze vengono persistiti in JSON con LowDB per sopravvivere ai riavvii.

La vista grande schermo durante una domanda

Stack e vincoli

Il progetto usa Next.js 16 e React per le interfacce, TypeScript per condividere i tipi tra client e server, Socket.io per il trasporto realtime e un custom Node server perché le connessioni WebSocket richiedono un processo persistente.

Ho aggiunto anche sessioni admin firmate, protezione delle route di scrittura, controlli sugli upload e una pipeline CI con lint, type-check e build.

Il buzzer della vista mobile

Stato del progetto

BuzzRoom è pubblicato come progetto open source con licenza MIT e può essere eseguito in locale su una LAN. Non lo presento come demo cloud: il requisito tecnico è un server Node persistente e tutti i dispositivi devono poter raggiungere l'IP del computer host.