How ravichow/badminton-tournament-maker-v2 works
Badminton Tournament Maker manages doubles tournaments from roster and format setup through live court scoring, group standings, and knockout playoffs, with organizer and spectator views. React’s App coordinates tournament state and major views; tournament-generation and standings logic lives in the engine. The API service provides local-first persistence and remote synchronization to Cloudflare Pages Functions and D1. README documents offline caching, QR sharing, themes, and exports; some detailed runtime wiring was not sampled, so those links are shown only where supported.
Main entry points: App.tsx App coordinator · SpectatorView.tsx Spectator view · AdminDashboard.tsx Admin dashboard · api.ts API and local cache
Components 22
Tournament workflow
- App coordinator
src/App.tsx - Tournament setup
src/components/QuickSetupModal.tsx - Roster management
src/components/RosterManagerModal.tsx
Organizer and spectator views
- Admin dashboard
src/components/AdminDashboard.tsx - Court match cards
src/components/CourtCard.tsx - Match scoring
src/components/ScoreModal.tsx - Knockout bracket
src/components/KnockoutBracket.tsx - Tournament glance
src/components/TournamentGlanceView.tsx - Spectator view
src/components/SpectatorView.tsx - QR sharing
src/components/QRCodeModal.tsx - Tournament hub
src/components/TournamentsHubModal.tsx
Tournament logic
- Pairing and formats
src/utils/engine.ts - Tournament state
src/types/tournament.ts - Standings and tiebreaks
src/utils/engine.ts - Tournament debrief
src/utils/debrief.ts - PDF and image export
src/utils/exportVisuals.ts
Persistence and API
- API and local cache
src/services/api.ts - Tournament API
functions/api/tournaments.ts - Roster API
functions/api/roster.ts - Cloudflare D1
Other components
- Organizer
- Spectator
Connections 25
- Organizer → App coordinator: uses
README.md - App coordinator → Tournament setup: opens setup
src/App.tsx - App coordinator → Admin dashboard: renders
src/App.tsx - App coordinator → Spectator view: renders
src/App.tsx - Tournament setup → Roster management: selects players
- Roster management → App coordinator: submits roster
src/components/RosterManagerModal.tsx - App coordinator → Pairing and formats: generates tournament
src/App.tsx - Pairing and formats → Tournament state: builds structure
src/utils/engine.ts - App coordinator → API and local cache: syncs state
src/App.tsx - Admin dashboard → Court match cards: renders courts
src/components/AdminDashboard.tsx - Admin dashboard → Match scoring: opens scoring
src/components/AdminDashboard.tsx - Admin dashboard → Standings and tiebreaks: calculates standings
src/components/AdminDashboard.tsx - Standings and tiebreaks → Knockout bracket: seeds playoffs
src/components/KnockoutBracket.tsx - Spectator → Spectator view: views tournament
README.md - Spectator view → Knockout bracket: renders bracket
src/components/SpectatorView.tsx - Spectator view → Tournament glance: renders summary
src/components/SpectatorView.tsx - Spectator view → PDF and image export: exports visuals
src/components/SpectatorView.tsx - Spectator view → QR sharing: shares link
- Admin dashboard → Tournament debrief: generates report
src/components/AdminDashboard.tsx - App coordinator → Tournament hub: opens hub
src/App.tsx - Tournament hub → API and local cache: loads tournaments
src/components/TournamentsHubModal.tsx - API and local cache → Tournament API: requests tournaments
src/services/api.ts - API and local cache → Roster API: requests roster
src/services/api.ts - Tournament API → Cloudflare D1: reads and writes
README.md - Roster API → Cloudflare D1: reads and writes
README.md