SetPoint
Multi-sport league manager
The challenge
An amateur league manages complex relationships —teams, players, matches and events— and needs consistent operations even when there is no connection.
My role
Team project. My contribution: the IndexedDB data layer with integrity transactions, reusable components, the dashboard and league management with single and double elimination brackets.
Technical decisions
- 01
Real IndexedDB transactions to finalize matches and propagate winners without intermediate states.
- 02
Bracket built backwards from the final using nextMatchId and loserNextMatchId.
- 03
Hash router and custom elements to keep the application free of framework dependencies.
- 04
League export and import as JSON for backup and portability.
Outcome
An installable PWA with local persistence, live stats, Chart.js charts and a double elimination bracket.