How dump-hr/futsal-app works
Futsal App supports tournament administration and public tournament viewing. Administrators sign in, configure tournaments, groups and teams, schedule matches, and record live match events and timer state; spectators browse tournament standings, draws, teams and match details, including live updates. The API separates these domain operations into NestJS modules and uses Prisma with PostgreSQL. The graph shows the documented client/API/data responsibilities; frontend request wiring and persistence details are summarized because their implementations were not sampled.
Main entry points: src/api Admin API clients · src/api Public API clients · prisma.ts Prisma access · src Shared DTOs and enums
Components 19
Administration
- Admin interface
apps/admin/src/pages - Login and access
apps/admin/src/api/auth - Admin API clients
apps/admin/src/api
Public Web
- Public tournament views
apps/app/src/pages - Public API clients
apps/app/src/api
API Domain
- Tournament endpoints
apps/api/src/tournament - Group endpoints
apps/api/src/group - Team and player endpoints
apps/api/src/team - Player endpoints
apps/api/src/player - Match endpoints
apps/api/src/match - Match event endpoints
apps/api/src/match-event - Match timer endpoints
apps/api/src/match-timer - Authentication
apps/api/src/auth - Logo storage service
apps/api/src/blob
Persistence and Contracts
- Prisma access
apps/api/lib/prisma.ts - PostgreSQL
- Shared DTOs and enums
packages/types/src
Other components
- Administrator
- Spectator
Connections 38
- Administrator → Admin interface: manages tournaments
- Admin interface → Login and access: signs in
- Admin interface → Admin API clients: requests changes
- Admin API clients → Tournament endpoints: calls
- Admin API clients → Group endpoints: calls
- Admin API clients → Team and player endpoints: calls
- Admin API clients → Player endpoints: calls
- Admin API clients → Match endpoints: calls
- Admin API clients → Match event endpoints: calls
- Admin API clients → Match timer endpoints: calls
- Admin API clients → Authentication: authenticates
- Spectator → Public tournament views: views tournaments
- Public tournament views → Public API clients: loads data
- Public API clients → Tournament endpoints: calls
- Public API clients → Group endpoints: calls
- Public API clients → Team and player endpoints: calls
- Public API clients → Match endpoints: calls
- Public API clients → Match event endpoints: subscribes to events
- Public API clients → Match timer endpoints: subscribes to timer
- Tournament endpoints → Prisma access: reads and writes
- Group endpoints → Prisma access: reads and writes
- Team and player endpoints → Prisma access: reads and writes
- Player endpoints → Prisma access: reads and writes
- Match endpoints → Prisma access: reads and writes
- Match event endpoints → Prisma access: reads and writes
- Match timer endpoints → Prisma access: persists state
- Authentication → Prisma access: looks up admin
- Prisma access → PostgreSQL: queries
- Team and player endpoints → Logo storage service: stores logos
- Admin API clients → Shared DTOs and enums: uses DTOs
- Public API clients → Shared DTOs and enums: uses DTOs
- Tournament endpoints → Shared DTOs and enums: uses DTOs
- Group endpoints → Shared DTOs and enums: uses DTOs
- Team and player endpoints → Shared DTOs and enums: uses DTOs
- Match endpoints → Shared DTOs and enums: uses DTOs
- Match event endpoints → Shared DTOs and enums: uses DTOs
- Match timer endpoints → Shared DTOs and enums: uses DTOs
- Authentication → Shared DTOs and enums: uses DTOs