The problem
Volunteer flag football leagues run game day from a whiteboard. Refs juggle downs, the clock, penalties and league rules such as a girl-play counter in their heads, and the parents on the sideline usually can't see the score at all.
A dedicated scoreboard costs around $300, which a new league can't absorb.
The opportunity
Every ref, coach and parent already carries a phone. If the scoreboard lived there, it could also feed live spectating, standings, schedules and league websites, and turn a game into something families share.
My approach
- 01
Ref-first
The referee screen had to work one-handed and eyes-up: tap to run the clock, swipe for downs and turnovers, or map calls to the phone's volume buttons or any Bluetooth remote, even with the screen off.
- 02
Spectators for free
Every game gets a six-character watch code. Fans open readyref.app/game/CODE in any browser to follow the score, clock and play-by-play live, with no app and no account.
- 03
Grow into the league
Once games run on it, the same data powers schedules, standings, tournaments, season stats and a public league website.
- 04
AI that cites its source
The rulebook assistant answers only from the league's own uploaded rulebook, quotes the exact rule, and says when the rulebook doesn't cover the question.
Architecture
Select a component to see what it does, what it connects to, and its status.
One React + TypeScript codebase ships to the web and, through Capacitor, to Android. Firebase splits the data by how fast it moves: Realtime Database for live game state, Firestore for durable league records, Cloud Functions for everything the client mustn't be trusted with.
- Clients
- Edge
- Server
- Data
- External
Architectural decisions
- Two databases on purpose
- Realtime Database for sub-second game state, Firestore for queryable league data. Each does one job well instead of one doing both badly.
- Capacitor over a native rewrite
- One codebase keeps a solo developer shipping to Android and the web together; native plugins cover hardware buttons and haptics.
- Server-side entitlements
- An early version stored the subscription tier where the user could write it. Moving it into Cloud Functions changed how every schema after it was designed.
- Youth privacy by default
- Public league sites publish team names, scores and standings, never player names.
Implementation details
- Play log with timestamped events and one-tap undo on any action, so a mis-tap never corrupts a game.
- Crew mode: several referees join one game by PIN and changes sync across devices live.
- Season Wizard: fields, time slots, dates to skip, referee assignments and conflict detection; tournament generator for single elimination and round robin variants.
- League registration with versioned waivers, capacity, deadlines, and card payments to the organizer's own Stripe account or offline payment.
- A marketing site with guides, rules, free tools (schedule maker, play maker) and an llms.txt for AI search.
Challenges overcome
Trust on game night
If the ref taps touchdown and the number flickers, they stop trusting the app. Live state is optimistic, ordered and reversible.
Four users, one app
Organizer, referee, coach and fan each want a different product. The home screen went through several rewrites to answer one question per role.
Solo, around a season
Back end, app, website, billing, art and support, built on nights and weekends during an actual season.
Capability status
Completed, experimental and planned capabilities, kept separate on purpose.
Live12
- Referee scoreboard, clock, downs, penalties
- Volume-button and Bluetooth remote control (Android)
- Swipe-pad controls with haptics
- Live spectator scoreboards by watch code
- Fan reactions, predictions and leaderboards
- Multi-referee crews synced live
- Season scheduling, standings, tournaments
- League Pulse season and player stats
- Public league websites
- Registration, waivers and Stripe payments
- AI rulebook assistant with citations · Plus and League plans
- Interactive play designer (Play Maker)
Beta1
- Smartwatch referee experience · Working; pending Google Play release
Experimental1
- Play Maker MCP server for AI assistants
Planned1
- Native iOS app · In development
Results & current status
- Live on Google Play and at readyref.app, running real league nights at Bluewater Flag Football in Sarnia, Ontario.
- Free plan runs a real game; Plus and League subscriptions fund bigger seasons.
- Ships to Android and the web from one codebase.
Support and privacy for the ReadyRef app: ReadyRef app page.
Next buildSalesforce architecture & reporting suiteA CRM that routes, scores and reports on its own, plus live dashboards leadership uses every week.

