Tap Add Round, then ☾ to shoot the moon
Scoreboard
You
32
Maya
82
Dev
66
Jo
54
Round
- 141624
- 213535
- 30262626
- 492141
- 537313
- 611744
- 729141
Hearts Score Tracker • 2025–2026
Hearts scoring for the whole table
Overview
Hearts Score Tracker keeps score for a table of 3 to 5 players: every hand, the Queen of Spades, shooting the moon, and who’s lowest when someone hits 100.
I built it on the same foundation as Gin Score Tracker, and it was on the App Store 2 days after my first commit. Then its code became the base for the rest of my score trackers.
- Role
- Design and build
- Timeline
- November 2025 to August 2026
- Platform
- iPhone and iPad
Problem
How might a score tracker built for 2 players work for a whole table?
Hearts Score Tracker was built to solve the same core problem as Gin Score Tracker, replacing pen-and-paper scoring, but for a game with very different rules and dynamics.
Everyone scores every hand
Gin has 1 winner per hand. In Hearts, all 3 to 5 players take points every hand.
Lowest wins
Each heart is 1 point and the Queen of Spades is 13. The game ends when someone reaches 100, and the lowest total wins.
Shooting the moon
Take every penalty card and the hand flips: you score 0 and everyone else scores 26.
Design
Every player on one screen.
From 1 opponent to a table
Gin is built around 1 opponent, with your score and theirs. Hearts needed a game with any number of players and a score for each of them every round, so the scoreboard became a column per player with their color, total and a gold crown on the lowest. The plan for the conversion suggested starting with 2-player Hearts as the easier version. I built 3 to 5 players instead.
Round entry, redesigned the same day
My first draft on December 1, 2025 gave every player a big number box, with a separate “Shoot the moon?” section underneath that explained the rule. Rounds were a stack of cards, and the win screen said “YOU WINS!”
Later that day, each player was a row you tap. The selected row opens a score box and 2 toggles right beside it: ♠ adds the Queen of Spades’ 13 points, and ☾ shoots the moon and fills in the whole table, 0 for the shooter and 26 for everyone else. The rounds became a grid with a column per player, and the win became a yellow WINNER card. That’s the version that shipped the next day. The demo at the top of this page is rebuilt from today’s version of it.

First draft

Shipped

First draft

Shipped
In progress: Why the redesign
Add what made you change it so fast: did you play a round with the first draft?
System
One app became a family.
Building Hearts from Gin showed which parts were the game and which were the app. In January 2026 I pulled the shared parts out of Hearts into a score-tracker base: the screens, storage, purchases and the look. Each game shrinks to a small module that says how many people play, how a round is scored and who wins, whether that’s the lowest total, the highest or an exact number.
In June 2026 a game registry made adding a game a matter of writing that module and registering it, with no changes to the screens. Spades and Canasta each went from first commit to the App Store in about 10 days. The same base also became Desk Yoga, a stretching app.
Gin
Hearts
Spades
Canasta
In progress: Credit for the system
Since June 2026 the family has been built with Claude Code agents (every Spades commit, most of Canasta’s). Say what you designed and decided, and what the agents built. The 2025 Gin and Hearts work has no AI co-authors.
Results
Hearts went from first commit to the App Store in 2 days, with 23 commits in about 23 hours. It has had 3 public versions since December 2025 and is rated 5.0 from 2 ratings as of October 2026. Across the family, 4 score trackers are live, with 9 ratings, all 5 stars.
In progress: Numbers
Add downloads or Premium conversions from App Store Connect if you want them public; the apps have no analytics. The App Store description promises streaks and stats the app doesn’t have yet: rewrite it or build them.
Reflection
Building Hearts Score Tracker reinforced the value of reusable architecture and thoughtful abstraction. Balancing code reuse with flexibility meant carefully separating shared components from game-specific logic, so the app felt purpose-built rather than reused.
It also showed me how small, focused products can compound over time when built with maintainability and iteration in mind.
In progress: A next step to consider
The design tokens added to the base in January 2026 (spacing, radii, type and shadows) aren’t used yet; every style is written inline, so a change to the look has to be made in every app. If moving onto the tokens is the plan, it’s a good line to end on.
How I built it
React Native and Expo with NativeWind, on the same base as Gin. Games live on the phone, with no account needed. The engineering side has the details.