Open-source · MIT
Smash Dates
Run a multi-club badminton league end to end — set up clubs, teams, venues and divisions, auto-generate a constraint-aware home-and-away fixture schedule, confirm fixtures, track live standings, subscribe to calendar feeds, and run live club-night pegboard sessions.
What it does
Automatic scheduler
A custom heuristic engine builds a full double round-robin honouring venue capacity, blocked dates, derby-first rules and week-type matching — with per-league tunable spread, and on-demand diagnostics when a season won't fit.
Seasons & lifecycle
Ordered playing weeks, team entries per season, and an automatic, date-driven lifecycle from Draft through Scheduling, Proposed, Active and Closed.
Match lifecycle & standings
Clubs confirm or reject fixtures; record results and walkovers; live division standings with rubber difference and a head-to-head tiebreak.
Club night pegboard
A live, streamed board for social nights — a fair waiting queue, courts, games and per-night stats, with manual / suggest / auto-fill court filling. Add players from the club roster, or register a walk-in as a visitor. Schedule sessions ahead of time with an optional time, duration and venue, then open one when the night begins.
Public & calendar
A logged-out, read-only public view of standings and fixtures, plus tokenised iCal feeds to subscribe a calendar to a club's, league's or team's fixtures.
Players & registrations
Club-managed player rosters, discipline registrations confirmed by the league, league-scoped inter-club transfers, team squads, and bulk CSV import throughout.
Screenshots
League setup — divisions, seasons, clubs, scheduler
Live division standings
Club-night pegboard — courts & waiting queue
Public view — standings & fixtures, no login
Run it
Self-host the published image with one command — it sets up PostgreSQL, the app
and Caddy (automatic HTTPS) and runs docker compose up. The first
account registered becomes the admin.
# Linux / macOS
curl -fsSL https://raw.githubusercontent.com/aamcatamney/smash-dates/main/scripts/install.sh | bash
# Windows / PowerShell
irm https://raw.githubusercontent.com/aamcatamney/smash-dates/main/scripts/install.ps1 | iex
# trusted HTTPS cert: point a domain at the host (ports 80/443) and pass it in
curl -fsSL .../install.sh | DOMAIN=league.example.com bash
Prefer to run from source, or want the full configuration + HTTPS notes? See the README quick start (development & production).