skip to content
carldmitchell.com
← all projects

League Manager

Software for running youth and recreational sports leagues (registration, scheduling, standings, referees) without an enterprise sales call.

details

status
paused
group
other
stack
Ruby on Rails 8, Hotwire, SQLite, Solid Queue/Cache/Cable, Minitest, Playwright system tests
since
2026-07

readme

A side project with my brother James, who has run rec leagues. Most league software is either a spreadsheet or something sold with a demo call and a per-player fee. This aims at the middle.

What's built

  • The domain: league, season, division, team and player, plus fields and games.
  • A scheduler: round-robin within each division, packed into a grid of fields and time slots, with no team or field ever double-booked. The demo seed lays out a 30-team, 5-field season without conflicts.
  • Standings, derived on the fly: 3 points for a win, 1 for a draw, tie-broken by goal difference and then goals for.
  • Real operations: player rosters and public registration, a reschedule flow for rained-out games, referee scheduling with date availability, shortages flagged on the schedule, and assignment emails.
  • A public page per league, with schedule and standings and no login.

How it's built

Vanilla Rails 8, the "what would DHH do" way: Hotwire, importmaps, SQLite, the Solid trio, Minitest with fixtures, plain semantic CSS. No Node, no Redis, no React. System tests drive a real browser with Playwright.

It started from a written market survey and an MVP scope, both in the repo, and the build followed that scope feature by feature.