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 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. A few items, like a dedicated iPad layout, are on the list for a post-launch update.
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, and store screenshots, then out the door to iOS, Android, and web.
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