Sommelier Arena
A real-time blind wine tasting quiz β Kahoot-style, β¬0/month to host, zero cold starts.
How it worksβ
A host creates a game session with one or more wines. Each wine gets five questions (color, country, grape variety, vintage year, wine name). Participants join via a 4-digit code on their phone, answer live as the host controls the pace, and compete on a leaderboard.
Everything runs on Cloudflare: the frontend is a static Astro site on Cloudflare Pages; the game backend is a PartyKit Durable Object (Cloudflare Workers); session lists are stored in Cloudflare KV.
Quick linksβ
| Doc | What it covers |
|---|---|
| Quick Start | Run locally in under 2 minutes |
| Architecture | Repo layout, runtime communication, DO lifecycle |
| Tech Stack | Stack choices and design principles |
| Gameplay Workflow | Phase machine, event flow, answer/scoring rules |
| Event Reference | All WebSocket message types (client β server) |
| Host Identity | TANNIC-FALCON-style IDs, session dashboard, rejoin |
| Data Persistence | DO storage keys, KV schema, what survives a restart |
| Deployment | Cloudflare Pages + PartyKit deploy guide |
| Cloudflare Setup | Step-by-step Cloudflare dashboard walkthrough |
| Contributing & Env | Dev workflow, branch strategy, PR checklist, and environment setup |
What's new in v2.0 (PartyKit)β
-
Zero cost, zero cold starts β Durable Objects wake on demand
-
Session persistence β create Monday, resume Wednesday
-
Participant rejoin β page refresh during a game reconnects automatically
-
Host identity dashboard β see all your past and active sessions from any device
-
Five questions per wine β added
wine_namecategory -
Configurable timer β 15β120 s slider at session creation
-
No-lock answers β participants can change their answer until the host reveals
-
2 Γ 2 option grid β cleaner layout on mobile
-
Quick Start β local dev setup