Badminton Tournament League
Full-stack tournament management platform for badminton. Organize singles and doubles tournaments with auto bracket generation, live scoring, and ranking all from your phone.
Core Features
Tournament Management
Create and manage tournaments with full control over format, scoring, and participants. Supports knockout, round-robin, and Swiss formats.
- Singles & doubles tournament types
- Custom start/end dates & location
- Configurable max match score (default 21)
- Organizer controls: edit, delete, conclude
Auto Bracket Generation
Custom-built bracket engine supporting single and double elimination with up to 32 participants. Bye matches auto-resolved.
- Single elimination with seeded bracket tree
- Double elimination with winners/losers brackets
- Grand final match support
- Self-referential match linking for traversal
Live Match Scoring
Score matches in real-time with best-of-3 sets, deuce logic, and auto-advancement to the next bracket round.
- Best-of-3 sets per match
- Configurable deuce cap (+10 points)
- Auto-determined set winners
- Winner auto-advances in bracket
Player & Team Management
Full player directory with profiles, leaderboard, and match history. Team creation for doubles with partner pairing.
- Player directory with search & filter
- Elo-style ranking system (starting at 1000)
- Offline player creation (no account needed)
- Avatar upload via image picker
Schedule & Calendar View
Browse all matches in a calendar view, filterable by date. Each match shows participants, court number, and tournament name.
- Calendar-based match schedule
- Date-filtered browsing
- Court number assignment
- Live match banner on home screen
Authentication & Profiles
Secure authentication with email/password and Google Sign-In. JWT-based sessions with persistent login.
- Email & password registration/login
- Google OAuth 2.0 sign-in
- JWT session with AsyncStorage persistence
- Profile editing with playing style & avatar
Screenshots
Technical Specifications
Architecture Overview
Mobile App (React Native)
Screen-based architecture with custom data hooks. Auth state via React Context. API calls through a typed fetch wrapper. Google Sign-In and image picker for avatars.
REST API (Express)
Modular route-based Express server with JWT auth middleware. Plain SQL via pg Pool — no ORM. Swagger docs at /docs. File uploads via multer.
PostgreSQL Database
Relational schema with 8 tables: users, players, tournaments, matches, teams, tournament_participants, brackets, and logs. Bracket engine uses self-referential match links.