Gameeba is an app I designed and built myself. It creates a real score sheet for whatever board game you're playing, keeps score live across everyone's phones, and can answer rules questions in the middle of a game.
Every game group I know has a drawer of half-filled score pads and someone doing math on their phone.
Board games come with a lot of little scoring rules and no good way to track them. Someone always ends up hunched over a notepad adding columns, the rulebook goes missing mid-round, and once the box closes there's no record that last month's great game ever happened.
I built Gameeba to fix that: a proper category-by-category sheet for the game in front of you, live scoring that shows up on every player's phone, an AI assistant that has read the rulebooks, and a history that remembers every play.




A single React Native codebase for iOS, Android, and web, in strict TypeScript. Local-first data with a per-user cloud mirror, full light/dark theming, OTA updates.
Supabase: Postgres + row-level security, auth, storage, realtime; edge functions guard AI and third-party calls.
Claude handles four jobs: score-sheet generation, rules Q&A, photo score reading, and recommendations. Each one has its own cost guardrails.
BoardGameGeek metadata + collection import behind a caching proxy; static marketing site on Cloudflare.
Problem — the app has to feel instant and work offline, but your data should still follow you to a new phone.
Approach — per-user local mirror reconciled against the cloud by timestamp; deletion tombstones so a removal isn't resurrected; cloud-missing records re-pushed instead of vanishing.
Problem — scorecards rebuilt from a lookup that only knew built-in games, so imported/generated/custom sheets collapsed to a bare total.
Approach — denormalize the sheet's layout, name, and art onto the saved session, so any viewer renders the full breakdown without needing your private sheet.
Problem — the AI features are the best part of the app and also the expensive part. I needed hard limits that didn't feel like hitting a wall.
Approach — durable Postgres-backed per-user limits; in-theme messages state exactly how long to wait; photo capture pre-checks the limit before the camera opens; sheet generation degrades gracefully and nudges toward a manual sheet.
Problem — I wanted dark mode across all ~100 screens, and it should already be dark at sign-up if your phone is.
Approach — token-based theming with light/dark palettes defaulting to the OS setting, wired through native appearance config plus a matching dark splash, so there's no flash of light at launch.
Before launch prep I sent builds to a small group of testers on both iOS and Android and asked them to log everything in a shared spreadsheet. They came back with 57 items across three rounds of testing: 33 bugs and 24 improvement ideas, from a cut-off button to sync issues that only showed up on a second person's phone.
The multiplayer bugs were the most valuable. Things like an avatar update not showing up on the other player's phone only surface with two people at a real table, and a whole class of realtime sync fixes came out of that.
Nearly everything is fixed and verified. The few still open, like an iPad layout, are on the launch list.
The core loop — build a sheet, run a session, save the result — with a curated catalog and generation for everything else.
Live shared sessions, friends, invites, shared notes, and profiles — realtime scoring that lands in every player's history.
Meeby for grounded rules help and recommendations, photo score capture, and narrative insights — each behind cost-safe limits.
Full dark mode, first-run coach marks, accessibility passes, and graceful, in-theme handling of every edge case.
Builds out to testers on iOS and Android, 57 bugs and ideas logged in a shared tracker across three rounds, then fixed and verified.
A marketing site with real device mockups, plain-English privacy and terms, store screenshots, and CI keeping the branch green.
Gameeba looks like a cozy little app for game night. Keeping it that simple took a local-first data layer, row-level security, four AI features, realtime sync, and a lot of care around the edge cases.
Back to all work