Courtside
Helping badminton clubs run their sessions.
- My role
- Independent product engineer
- Built with
- SvelteKit, TypeScript, Supabase, TanStack Query, Vitest, Playwright
The problem
A club night should be about playing. In practice, someone has to remember who arrived late, who has been waiting, who needs a break, and which players have already played together. Attendance, match results and costs often end up in different places.
What I built
Courtside brings those decisions into a mobile-first operator workflow. The admin records attendance, reviews player rotation and team recommendations, records set results, and closes the session with fees and expenses. Club members can follow public read-only views without having to create an account.
Decisions that shaped it
Recommendations are suggestions. The operator can override them because a real session includes fatigue, substitutions and changing arrivals. Rotation uses recorded READY time and session opportunities; rating updates use the actual completed set lineup. Those inputs need to be trustworthy before the interface can explain a recommendation.
Supabase/Postgres stores session state through authorized transactional commands. Public-safe views and row-level security separate information visitors can read from actions only the club admin can take.
Where it stands
The app has implemented session operation, rotation and pairing recommendations, results, and finance tracking. Validation during real club sessions is ongoing. The portfolio illustration represents the sport, not an application screenshot.
