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).
Attribute Detail
Goal Maintain the house roster: name, code, color, motto; keep colors distinct for inter-house UI
Frequency Setup season (start of year), occasional edits
Permissions houses.read/create/update/delete (permissions.constants.ts:46-49)
Core screens House list, house editor (05 §1-3)
Frustrations No mascot / house-master / points fields exist yet - must wait (planned); duplicate-name protection absent (houses.service.ts:19-21 checks only code)
Success metric Full house roster created in one session; no duplicate codes
Attribute Detail
Goal Assign a house to a student at admission; reassign after transfers or house changes
Frequency Daily during admissions
Permissions student.create/update + houses.read (permissions.constants.ts:25-28, 46)
Core screens Student create/update forms with a house picker (student module); house detail read-only (05 §2)
Mechanism houseId field on create-student.dto.ts:39-42 / update-student.dto.ts:45-48; no dedicated assign endpoint
Frustrations No bulk assignment; no per-house member list in the houses API; transfer flow ignores house (student.service.ts:185-192 keeps houseId)
Attribute Detail
Goal See which house students belong to; view member rosters; run inter-house events
Frequency Event weeks
Permissions houses.read + student.read
Core screens House detail with members (05 §2) - member list is a client-side join today, (planned) server support (01 §4.2)
Frustrations No points ledger, no house-master field (planned)
Attribute Detail
Goal Know their house, its color/motto; see house announcements and points
Frequency Event weeks
Core screens My-house view (client-only feature, no backend contract yet)
Notes QR check-in and push results (forward-looking), 01 §4.3
Attribute Detail
Goal See the child's house and inter-house participation
Frequency Occasional
Notes Read-only; reuses student record houseId (student.schema.ts:41-42)
Persona houses.readhouses.createhouses.updatehouses.deletestudent assignment
House admin ✅ ✅ ✅ ✅ via 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).