Challenge
Fragmented player registration, team assignment, and coach approvals across spreadsheets.
Constraints
- —Role-based access for coaches/players/admins
- —Configurable season/category rules
- —Public presence needed for registration
Architecture
- •React frontend with role-aware routing
- •Node.js backend with collection-based approval store
- •MongoDB for flexible seasonal schema changes
- •Configurable approval workflows using rule definitions
Key Decisions
- •Chose document DB to avoid repeating migration rewrites per season
- •Built role-aware dashboards instead of one admin dashboard to reduce support tickets
Impact
Live in production, managing 50+ active players across seasons with zero downtime since launch.
Production system — registration and league management in active use.