Realtime web companion for the Fishbowl party game.
This implementation is a playable v1 foundation focused on:
- Private invite-code rooms
- No-account guest player flow
- Host-controlled game progression
- 3 clues per player
- 40-second turns
- Three rounds (describe, act, one-word)
- Next.js (App Router) + TypeScript
- Tailwind CSS
- Zod for request validation
- Prisma (schema + client setup for upcoming persistence)
Implemented in this pass:
- Home screen to create or join rooms
- Room screen with stage-aware controls
- In-memory server-authoritative game store
- API routes for create/join/start clue entry/submit clue/start round/draw/mark/end turn
- Round and turn engine with timer expiration rollover
- Basic fairness behavior where only the active actor sees clue text
Not yet implemented:
- Database-backed persistence (currently in-memory)
- WebSocket event broadcasting (polling is currently used in UI)
- Authentication, spectator mode, and advanced anti-cheat controls
npm install
npm run prisma:generate
npm run devOpen http://localhost:3000.
npm run dev
npm run lint
npm run build
npm run test
npm run test:e2e
npm run prisma:generate
npm run prisma:migrate