Why full-count?
Baseball is a slow game with a lot of tiny events. Six fouls over nine pitches, a stolen base on a full count, a weird 4-6-3 that was almost a 4-3 — the ordinary scorecard apps built for phones can't keep up, and the big-league trackers are overkill for the bleachers or the couch. full-count aims straight at the middle: serious scorekeeping, zero ceremony.
A TUI, not a GUI
Scoring a game is a keyboard activity the way chess is a keyboard activity. Your hands settle
into a rhythm and every keystroke carries a meaning: B for ball,
F for foul, 1 for a single.
A terminal UI is the honest medium for that. No mouse hunting, no gesture lag, no layout shifts when a modal pops up. Just characters in, characters out, at 60 Hz, on every machine from a Raspberry Pi to a laptop. If you already live in a terminal, full-count feels like home.
Keyboard-first, every single action
There is no feature in full-count that requires more than a handful of keystrokes.
Pitches are one letter. Hits are one digit. Fielder's notation is typed the way it's
spoken — 6-4-3 is literally three keys, a hyphen, three keys, enter. The
RBI prompt is a single digit. Even substitutions and wild pitches fit in seconds.
You can run the entire application without ever moving from the home row.
Real scorekeeping, not a box score
full-count doesn't just remember the result of an at-bat — it remembers the sequence: every ball, strike, foul, and base advancement, in order, with enough fidelity to reconstruct the game pitch-by-pitch. That enables three things nobody else gives you for free:
- A real replay mode that walks through the game as it happened.
- A paper-style HTML scorecard export that a human can actually read.
- A 100-level undo stack for when the batter just fouled off a strike you already recorded as a ball.
No servers, no telemetry, no accounts
The app runs entirely on your machine. Saves are plain JSON under
~/.full-count/saves/. Exports are plain HTML under
~/.full-count/exports/. Nothing phones home. Nothing asks you to sign in.
You own your games.
Rust, because the game runs forever
A scorekeeper app that crashes in the seventh inning is worse than useless. Rust gives us a binary that starts instantly, holds up under long-running sessions, and fails loudly instead of silently. The panic hook restores your terminal so you never end a game staring at a busted prompt. 137 tests (and counting) keep the edge cases honest.
full-count is deliberately not a streaming/broadcast tool. It's a scorekeeper's notebook. If you need play-by-play graphics or a public API, you want a different project. If you want to keep score the way your grandfather did — but faster, with undo — you're in the right place.