How jerenzelevi/tournament-manager works
Tournament Manager is a web application for creating and running tournaments across single- and double-elimination, round-robin, and Swiss formats. Its main workflow moves from tournament creation and participant seeding through schedule generation, match-result entry and advancement, then standings and bracket/results views. The sampled source confirms the database access layer, participant/result actions, and several format engines; some UI-to-action and result-view wiring is inferred only where the component roles are clear, so uncertain edges are omitted.
Main entry points: tournaments.ts Tournament actions · [id]/page.tsx Tournament detail · index.ts Database access · app/page.tsx Tournament list
Components 21
Tournament UI
- Tournament list
src/app/page.tsx - Tournament detail
src/app/t/[id]/page.tsx - Create dialog
src/components/create-tournament-dialog.tsx - Participant manager
src/components/participant-manager.tsx - Start control
src/components/start-tournament-button.tsx - Match card
src/components/match-card.tsx - Bracket views
src/components/bracket-view.tsx - Rounds board
src/components/rounds-board.tsx - Standings table
src/components/standings-table.tsx - Tournament results
src/components/tournament-results.tsx
Tournament operations
- Tournament actions
src/app/actions/tournaments.ts - Admin actions
src/app/actions/admin.ts
Format engines
- Single elimination
src/lib/tournament-engine/single-elim.ts - Double elimination
src/lib/tournament-engine/double-elim.ts - Round robin
src/lib/tournament-engine/round-robin.ts - Swiss rounds
src/lib/tournament-engine/swiss.ts - Engine types
src/lib/tournament-engine/types.ts
Persistence
- Database access
src/db/index.ts - Tournament schema
src/db/schema.ts
Other components
- Host
- Neon database
Connections 23
- Host → Tournament list: browses
- Tournament list → Database access: loads tournaments
- Tournament list → Create dialog: opens creation
- Host → Tournament detail: manages tournament
- Tournament detail → Database access: loads tournament data
- Create dialog → Tournament actions: creates tournament
- Participant manager → Tournament actions: manages participants
- Start control → Tournament actions: starts tournament
- Match card → Tournament actions: reports result
- Tournament detail → Participant manager: renders setup
- Tournament detail → Start control: renders setup control
- Tournament detail → Rounds board: renders rounds
- Tournament detail → Bracket views: renders bracket
- Tournament detail → Standings table: renders standings
- Tournament detail → Tournament results: renders results
- Rounds board → Match card: renders matches
- Tournament actions → Database access: reads and writes
- Tournament actions → Single elimination: generates rounds
- Tournament actions → Double elimination: generates brackets
- Tournament actions → Round robin: generates rounds
- Tournament actions → Swiss rounds: generates next round
- Database access → Tournament schema: uses schema
- Database access → Neon database: connects