E2-F3: Stadium Template Management¶
Epic: E2: Match & Stadium Management
Size: M (Medium)
Problem / Outcome¶
Pre-created stadium configurations for Croatian venues.
Scope¶
In-Scope:
- CRUD /admin/stadiums for templates
- Sectors, rows, seats configuration
- Base capacity management
- Predefined Croatian venues with pre-configured seat maps (Maksimir, Poljud, Opus Arena, Rujevica, Varazdin)
Out-of-Scope:
- Dynamic stadium creation for away matches (covered in E2-F5: Away Match Stadium Creation)
- Manual seat map configuration for new stadiums (covered in E2-F10: Sector Seat Map Configuration)
Pre-configured Seat Maps
Stadium templates for Croatian venues include fully configured seat maps with all rows and individual seats pre-defined. When an admin selects a template for a match, the complete seat inventory is copied. For new or away stadiums, use E2-F10: Sector Seat Map Configuration to define the seat structure.
Acceptance Criteria¶
- AC1: Given stadium template exists, when admin selects for match, then copy is created for match-specific config
- AC2: Given stadium template, when viewing, then all sectors with seat counts are displayed
- AC3: Admin can list available templates (Maksimir, Poljud, Opus Arena, Rujevica, Varazdin)
Data Model Impact¶
Stadium table:
- id (UUID, PK)
- name (VARCHAR)
- city (VARCHAR)
- type (ENUM: HOME, AWAY)
- base_capacity (INTEGER) — Auto-calculated as sum of sector capacities (not user input)
- created_at (TIMESTAMP)
Sector table:
- id (UUID, PK)
- stadium_id (UUID, FK)
- name (VARCHAR)
- capacity (INTEGER) — Derived from seat count when seat map exists; manually entered for sectors without seat maps
SeatTemplate table:
- id (UUID, PK)
- sector_id (UUID, FK)
- row_number (VARCHAR)
- seat_number (VARCHAR)
Permissions/Roles¶
- Admin (Stadium Manager)
How to Verify¶
npm test -- --grep "stadium template"
Expected: Templates load correctly, copy mechanism works.
Dependencies¶
- None (foundational data)
Implementation Tasks¶
See E2: Match ## Doc References Stadium Tasks
Doc References¶
Last Updated: January 2026