Mobile app · Design & engineering

A better way to keep score on game night.

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.

Role
Solo — design + build
Platforms
iOS · Android · Web
Stack
Expo · Supabase · Claude
Status
Launch prep
The problem

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.

Gameeba home screen
Your shelf
Live category score sheet
Live score sheet
Meeby AI rules chat
Meeby, the rules assistant
Stats dashboard
Stats & history
What I built

The five main features.

Smart score sheets

A real sheet for every game

Category-by-category scoring with support for expansions, teams, and co-op. I hand-curated sheets for popular games, and everything else is generated on demand.

Play together

One sheet, everyone's phone

Everyone scores on the same sheet in real time, and finished games save to every player's history automatically, with no retyping.

Meeby

Rules help without the arguments

Meeby answers rules questions about the game you're playing, cites the rulebook, and speaks 11 languages.

Photo capture

Snap the pad, fill the sheet

A vision model reads a physical score pad and maps the numbers to players and rows, flagging anything uncertain.

Stats & history

Stats and history

Win rates, streaks, hours played, head-to-head records, per-game scorecards, and a year-end "Wrapped." Everything is stored locally first so it's fast and works offline, then mirrored to the cloud.

Under the hood

How it's built.

Client

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.

React NativeExpo SDK 54TypeScriptEAS Update
Backend

Supabase: Postgres + row-level security, auth, storage, realtime; edge functions guard AI and third-party calls.

SupabasePostgres · RLSEdge FunctionsRealtime
Intelligence

Claude handles four jobs: score-sheet generation, rules Q&A, photo score reading, and recommendations. Each one has its own cost guardrails.

Claude APIVisionGrounded Q&ARate limiting
Data & web

BoardGameGeek metadata + collection import behind a caching proxy; static marketing site on Cloudflare.

BoardGameGeekCloudflareWebP
Selected engineering

A few problems I'm glad I solved.

A
Sync

Local-first data that survives a reinstall

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.

B
History

Score history any player can read

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.

C
AI cost

Guarding spend without a wall of errors

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.

D
Craft

Dark mode that follows the phone from the first screen

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.

QA & beta testing

Then I handed it to people who wanted to break it.

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.

Straight from the tracker 57 items · 3 rounds
“Brown lettering/icons is a little hard to read”Fixed
“‘Surprise me’ button is cutoff”Fixed
“Spelling of favorite in stats”Fixed
“When I’m in a session and sign out, on the other person’s screen the time is stopped”Fixed
“History didn’t transfer over from expo, had to import it”Fixed
“Make iPad version”Open
How it came together

How the build progressed.

Foundation

Score the game in front of you

The core loop — build a sheet, run a session, save the result — with a curated catalog and generation for everything else.

Together

Make it social

Live shared sessions, friends, invites, shared notes, and profiles — realtime scoring that lands in every player's history.

Intelligence

Add the assistant

Meeby for grounded rules help and recommendations, photo score capture, and narrative insights — each behind cost-safe limits.

Polish

Polish it

Full dark mode, first-run coach marks, accessibility passes, and graceful, in-theme handling of every edge case.

Testing

Beta test with real groups

Builds out to testers on iOS and Android, 57 bugs and ideas logged in a shared tracker across three rounds, then fixed and verified.

Launch prep

Ready the release

A marketing site with real device mockups, plain-English privacy and terms, store screenshots, and CI keeping the branch green.

Reflection

Simple on the surface took real work underneath.

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