Back to Projects

Scorer

Get The Score Done
DartsB2CProduct DesigniOSSwiftUIWebSockets

A native X01 scorer for iPhone and iPad that keeps game night moving. Play locally or online with up to eight players, or against a configurable bot. No ads and no account.

Role
Solo product design and iOS development
Timeframe
April 2025 to August 2026
Year
2025 to 2026
Tools
Figma, Xcode, SwiftUI, Hummingbird, Docker, Codex, Claude Code, MCP

The game stays in front

During a leg every player keeps a card with their remaining score, live average, best visit and darts thrown. The active card follows the throwing order and picks up the checkout route as soon as one exists. Total entry runs through a large keypad, while dart-by-dart mode records the exact finish and rejects impossible visits before they reach the scoreline. Undo is one tap away.

The scorer I wanted at the board

A darts scorer should take a score fast and then stay out of the way. I built Scorer for the nights when the next throw matters more than the phone on the table.

That kept the product local-first and quiet. The roster and preferences stay on the device, there is no Scorer account, and there are no ads or tracking SDKs. Online play is optional and sends only the match data the players need to stay in sync, through a small relay server I run myself.

Play your way

Setup covers the X01 formats I wanted around a board and stops there. Choose 301, 501 or 701, Straight, Double or Master Out, First to or Best of, and matches across legs and sets. Up to eight players share one phone. The bot plays ten calibrated levels between a 20 and a 110 average, and an online match needs a six-digit lobby code and no account. The app ships in eleven languages.

Native from phone to tablet

Scorer is one SwiftUI app with a layout per device. On iPhone the active players move through a horizontal carousel in portrait. iPad uses the extra room: player cards spread across the width, the keypad grows with the device, and landscape becomes a full game-board view. System appearance, six haptic strengths and the language setting carry across both.

From prototype to v1.0

The first Scorer commit dates to April 2025. I came back for a rebuild in February 2026 and carried concept, product design, SwiftUI implementation and App Store release through to v1.0 build 8 in August. The app handles the rule cascade from visits to legs, sets and matches, plus a dart-by-dart bot that aims for the checkout routes it shows the player and misses into neighbouring beds. Optional online matches for up to eight players run through a relay server I wrote and host myself.

This was my first shipped native iOS product. I used Codex and Claude Code alongside Xcode, the command line and MCP throughout the build. The product decisions, the darts rules and the visual system stayed mine.