Skip to main content
Version: 0.4.0 β€” Wine Answers

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 tasting with one or more wines. Each wine gets five questions (color, region, 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 browser localStorage.

Core concepts​

  • Session β€” a single game instance, identified by a randomly generated 4-digit numeric code (e.g. 4821).
  • Round β€” one wine. Each round has exactly 5 questions played back-to-back. The leaderboard is shown after all 5 questions, before the next wine begins.
  • Question β€” one of the 5 fixed-category questions for a wine: color, region, grape_variety, vintage_year, wine_name. The host pre-fills the correct answer and 3 distractors.

Key rules​

RuleValue
Max players10 (lobby rejects extra joins)
Questions per wine5 (fixed categories)
Timer per questionConfigurable 15–120 s (default 60 s)
Scoring100 pts correct Β· 0 pts wrong/unanswered
Answer changingAllowed until host reveals β€” no first-tap lock
Mid-session joinsNot allowed once first round starts
PersistenceDO storage (SQLite) in production; in-memory in local dev

What's new in v0.4.0​

  • Stack upgrade β€” Astro 6, React 19, TypeScript 6, Tailwind CSS v4 (CSS-first config), Node.js β‰₯22.12
  • Wine Answers Collection β€” curated answer suggestions in the session creation form, powered by a dedicated Cloudflare KV Worker
  • Admin dashboard at /admin β€” manage the curated answer lists

Who are you?​

I am…Start here
A developer setting up locallyQuick Start
A developer understanding the systemArchitecture Β· Tech Stack
A product person / userFeatures Β· Gameplay Workflow
An admin managing answer dataAdmin Dashboard
Deploying to CloudflareDeployment Guide
An automation agent / AIFor Developers

Quick reference​

DocWhat it covers
Quick StartRun locally in under 2 minutes
ArchitectureRepo layout, runtime communication, DO lifecycle
Tech StackStack choices and design principles
Gameplay WorkflowPhase machine, event flow, answer/scoring rules
Event ReferenceAll WebSocket message types (client ↔ server)
Host & Participant IdentityTANNIC-FALCON-style IDs, session dashboard, rejoin for host and participant
Data PersistenceDO storage keys, KV schema, what survives a restart
Deployment GuideCloudflare Pages + PartyKit + Wrangler deploy
Configuration & EnvironmentsEnv vars, local vs prod, nginx explanation, testing preview
Admin DashboardManage wine answer suggestions