A scoreboard app for Genesis Billiards, a pool hall in Loveland, Colorado. The phone sits on the rail and gets handed across the table all night, so the whole screen is the scoreboard: one half per player, a huge number on each, and a tap on a half to score.

At the table

  • Tap to score. Tap your half for a point, or +10 for a run. A games tally sits on the seam for races; hold it to reset.
  • Presets for 9-Ball, Rotation, One Pocket and Straight Pool (14.1), or a custom race.
  • A match timer that counts down, counts up or runs as a shot clock. The alarm rings through the silent switch and still goes off with the phone locked.
  • Undo and redo for every score, and a match history.
  • No confirmation dialogs. Destructive actions are hold-to-confirm, and there’s no first-run tutorial, since whoever picks the phone up in rack three didn’t install it.

Under the hood

  • Every score is an event in a ledger and the match is a pure fold over it, so undo is moving a cursor back and a finished match can’t be accidentally un-won.
  • The live match is saved to disk on every change. Reopen the app hours later and it picks up where you were, or asks whether to start over.
  • The screen stays awake while a match is live and sleeps when it ends, so nobody drains their phone in the parking lot.
  • Built on Windows; the iOS builds and App Store uploads run on Codemagic.