Un'innocua cena al ristorante che si trasforma in un'arena di caos multiplayer in tempo reale, alimentata dall'AI Cameriere (Gemini).
👉 Gioca subito: https://chaos-diner.val.run
index.ts ← server Hono: HTML + API
lib/
game.ts ← macchina a stati (LOBBY→ORDERING→SERVING→CHILL→CHASE→ENDED), rabbia, fuga
ai.ts ← Cameriere AI (chat) + generazione immagini piatti (Gemini)
db.ts ← SQLite (val-scoped): stanze + log eventi
types.ts ← tipi condivisi client/server
frontend/
root.tsx ← HTML shell
audio.ts ← motore audio (scratch/metalli via Web Audio)
api.ts ← client API + sessione (localStorage)
components/ ← Lobby, GameScreen (tavolo, servizio, food fight, fuga)
GET /api/room/:id?since=… con eventi incrementali — serverless-friendly (niente WebSocket).SERVING), servite a ogni client; il polling resta leggero.frontend/audio.ts → setPlaylist(lofiUrl, metalUrl).La chiave Gemini vive nella env var GEMINI_API_KEY (mai nel codice). Modelli usati:
gemini-3.5-flash — attivo.gemini-2.5-flash-image — richiede quota sull'account (limite 0 sul piano free). Se non disponibile, il gioco usa un piatto segnaposto SVG come fallback.