Solo product · gamescore.cards
GameScore
A production PWA for tracking board-game scores: offline-first, fast, and built around a catalogue of 100,000+ BoardGameGeek titles — with a paid Pro tier. Designed, built, shipped and operated solo, with Claude Code as the force multiplier.
The problem
Board-game groups keep score on scraps of paper and half-broken apps. The good ones assume you're always online; the offline ones can't find your game. I wanted something that loads instantly at a kitchen table with no signal, knows essentially every game in print, and turns a finished match into something worth sharing.
Constraints that shaped the build
- Offline-first is non-negotiable — scoring happens where Wi-Fi isn't. State lives locally and syncs opportunistically.
- 100,000+ titles from BoardGameGeek have to be searchable instantly on a phone, without shipping a giant payload or hammering an API mid-game.
- It's a solo project with a real cost ceiling — the infrastructure had to be cheap to run and near-zero to operate.
- A paid Pro tier means real payments, entitlement checks and a feature boundary that can't leak.
Key decisions
I built on Nuxt 3 for a single TypeScript codebase across rendering and routing, with Pinia for predictable state. The offline core is Dexie over IndexedDB: matches, players and game metadata are local-first, so the UI never blocks on the network. The BGG catalogue is indexed for fast client-side lookup rather than a live API call on every keystroke.
The backend runs entirely on Cloudflare Workers with D1 and R2 — edge-close, inexpensive, and operationally quiet. The Pro tier is gated by server-verified entitlements so the boundary holds even though the app is offline-capable. Sharable Victory Cards turn a completed game into a designed artifact people actually post.
Architecture at a glance
- Client: Nuxt 3 PWA, installable, with a service worker for offline shell + assets.
- Local data: Dexie/IndexedDB as the source of truth for in-progress and historical games.
- Catalogue: 100k+ BGG titles indexed for instant on-device search.
- Edge: Cloudflare Workers for API, D1 for relational data, R2 for generated Victory Card assets.
- Monetization: Pro entitlements verified server-side; premium features fenced behind that check.
Where the AI workflow earned its keep
GameScore is the clearest proof of the workflow I write about: a single engineer carrying design, frontend, edge backend, data modelling and ops. Claude Code, driven by the context-engineering and agentic-orchestration setup I publish in claude-setup, is what made that scope tractable solo — planning loops for features, AI-assisted refactors with guardrails, and a typed memory system so the model kept the thread across long sessions.
Outcome
A live, production PWA with a paid tier — shipped and operated by one person. It's the answer to the only question that matters in an interview: can you take something from nothing to in-production, end to end? Here it is, and you can click it.