// personal

Tennis Score Keeper (Laravel)

Point-by-point tennis scoring in Laravel, ported from my Clojure kata and extended with match formats, tie-breaks, undo and a live scoreboard.

Company
XLANT SOFT · Self-employed
Role
Solo developer
Period
2023 – present
Platform
Web (PHP)

What I built

  • Tennis scoring in plain PHP: an immutable Score value object where each point returns a new score, plus a MatchFormat and a Player enum.
  • Full rules: 0/15/30/40, deuce and advantage, games, sets and the match, in best of 1, 3 or 5 sets, with a tie-break at 6–6 or advantage sets.
  • Matches are stored as their sequence of points and the score is replayed from it, so undo just drops the last point.
  • A TV-style Blade scoreboard with the umpire's call, a match list and a validated new-match form.
  • A tennis:simulate Artisan command that plays a random match, repeatable with --seed.
  • 22 tests: unit tests for every scoring rule, plus feature tests for the web flow and the command.

Built solo. The original Clojure version is listed below as Tennis Score Keeper.