Context
Admins need UI to view all cycles, create new cycles, and set which cycle is active.
Goal
Build admin page at /admin/cycles to manage cycles.
Features
List View:
- Table/cards showing all cycles (active and inactive)
- Display: name, active status badge, counts (applications, nominations, endorsements), created date
- Active cycle visually highlighted
- "Create New Cycle" button at top
- For each inactive cycle: "Set Active" button
- For each cycle: "View Details" link (goes to
/cycles/[id])
Create Cycle Modal:
- Text input for cycle name (required)
- Two buttons: "Create & Set Active" and "Create as Inactive"
- "Create & Set Active": Creates cycle with isActive = true, deactivates others
- "Create as Inactive": Creates cycle with isActive = false
Set Active Flow:
- Click "Set Active" on inactive cycle
- Confirmation modal: "This will make [Cycle Name] the active cycle. All new applications will go to this cycle. Continue?"
- On confirm: Set selected isActive = true, all others isActive = false
- If cycle has no settings, create default Settings record
Validation:
- Cycle name required
- Cannot soft delete active cycle
- Can soft delete inactive cycles only if no data (applications, nominations, endorsements)
Acceptance Criteria
- Page at
/admin/cycles displays all cycles
- Shows counts for applications, nominations, endorsements per cycle
- Active cycle clearly indicated
- Can create new cycle with name
- "Create & Set Active" sets new cycle active and deactivates others
- "Create as Inactive" creates without changing active cycle
- "Set Active" button on inactive cycles with confirmation
- Cannot delete active cycle
- Can delete empty inactive cycles
Context
Admins need UI to view all cycles, create new cycles, and set which cycle is active.
Goal
Build admin page at
/admin/cyclesto manage cycles.Features
List View:
/cycles/[id])Create Cycle Modal:
Set Active Flow:
Validation:
Acceptance Criteria
/admin/cyclesdisplays all cycles