Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

02 - User Personas (Houses Module)

Who uses the Houses module, what they need and what the backend actually gives them. Personas map to the screens in 05 and the journeys in 03. Roles are illustrative; the only enforcement today is JWT auth (houses.controller.ts:19-20)

  • RBAC guards are not yet wired (AGENTS.md), even though houses.* permissions exist (permissions.constants.ts:46-49).

1. House Admin (school admin / sports & culture lead)

AttributeDetail
GoalMaintain the house roster: name, code, color, motto; keep colors distinct for inter-house UI
FrequencySetup season (start of year), occasional edits
Permissionshouses.read/create/update/delete (permissions.constants.ts:46-49)
Core screensHouse list, house editor (05 §1-3)
FrustrationsNo mascot / house-master / points fields exist yet - must wait (planned); duplicate-name protection absent (houses.service.ts:19-21 checks only code)
Success metricFull house roster created in one session; no duplicate codes

2. Registrar / Admissions Officer

AttributeDetail
GoalAssign a house to a student at admission; reassign after transfers or house changes
FrequencyDaily during admissions
Permissionsstudent.create/update + houses.read (permissions.constants.ts:25-28, 46)
Core screensStudent create/update forms with a house picker (student module); house detail read-only (05 §2)
MechanismhouseId field on create-student.dto.ts:39-42 / update-student.dto.ts:45-48; no dedicated assign endpoint
FrustrationsNo bulk assignment; no per-house member list in the houses API; transfer flow ignores house (student.service.ts:185-192 keeps houseId)

3. Teacher / Staff (house tutor, forward-looking)

AttributeDetail
GoalSee which house students belong to; view member rosters; run inter-house events
FrequencyEvent weeks
Permissionshouses.read + student.read
Core screensHouse detail with members (05 §2) - member list is a client-side join today, (planned) server support (01 §4.2)
FrustrationsNo points ledger, no house-master field (planned)

4. Student (forward-looking)

AttributeDetail
GoalKnow their house, its color/motto; see house announcements and points
FrequencyEvent weeks
Core screensMy-house view (client-only feature, no backend contract yet)
NotesQR check-in and push results (forward-looking), 01 §4.3

5. Parent (forward-looking)

AttributeDetail
GoalSee the child's house and inter-house participation
FrequencyOccasional
NotesRead-only; reuses student record houseId (student.schema.ts:41-42)

Persona-role matrix

Personahouses.readhouses.createhouses.updatehouses.deletestudent assignment
House adminvia student form
Registrar❌ (typical)student.update
Teacher
Student / Parent✅ (forward-looking read)

Client gates UI on these permissions (permissions.constants.ts:46-49); server-side RBAC enforcement remains a (planned) audit item (IMPLEMENTATION_PLAN.md:239).