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 (Students Module)

Five personas exercise the Students module. Role → permission vocabulary derives from permissions.constants.ts:25-28 (student.read/.create/.update/.delete); note enforcement is (planned) (see 01 §12 OQ-4). Persona facts marked (forward-looking) reflect module docs (attendance/fees/results tabs) that read other modules' APIs.


1. Organization Admin — "Ravi, ERP owner"

Profile40s, principal/owner of a 1200-student school. Runs the ERP end to end; reviews numbers every evening.
GoalsRoster integrity (no dupes, correct classes), clean academic-year rollover, sees statuses at a glance, imports the new batch in September without IT help.
Pain pointsDuplicate admission numbers (409s), stale archived students polluting the list, transfer mistakes (enrolling into wrong year).
BehavioursUses desktop/web; bulk import wizard; reviews per-row CSV error report; audits academic history before approving transfers.
Permissionsstudent.read, student.create, student.update, student.delete + user.*, academics read (permissions.constants.ts:25-28,6-11).
Key screensStudents list, bulk import wizard, student detail → academic-history tab, transfer form.

2. Admission Staff / Receptionist — "Priya, front office"

Profile25s, first point of contact; admits 10–30 students/week during admission season.
GoalsCreate a student profile in under 2 minutes with the parent present; upload the birth certificate immediately; link the parent so fee/results messages reach home.
Pain pointsForgetting that the user record must exist before POST /students; typing admission numbers; re-finding a student's documents.
BehavioursPhone-first; uses create wizard with camera capture for documents (capture → POST /students/:id/documents); checks duplicate admission number inline before submit.
Permissionsstudent.create, student.read (+ user.create for the identity step).
Key screensCreate wizard (steps: identity → academics → extras → confirm), document upload, parent link sheet.

3. Teacher / Class Teacher — "Ananya, Grade 5-A teacher"

Profile32s, class teacher of 5-A; also marks attendance and homework.
GoalsFind any child by name/admission number quickly; see profile photo + parent pickup flags; view academic history before a parent meeting.
Pain pointsUnfilterable rosters (GET /students returns everything — client-side filtering today, OQ-2), statuses not obvious in the list.
BehavioursUses search + filter chips; opens student detail; rarely mutates (no create/transfer).
Permissionsstudent.read (+ attendance.mark etc. per other modules).
Key screensStudents list (search), student detail → profile + documents tabs.

4. Parent / Guardian — "Farid, father of two"

Profile40s, two children at the school; busy; uses the app on mobile.
GoalsSee both children in one place, their class, documents (fee receipts live in Fees module), and be marked as primary guardian so the school calls him first.
Pain pointsNone today server-side — parent has no self-service read of the student profile (OQ-1); current access is only GET /parents/:id/students which returns link rows, not student details (parent.service.ts:69-72).
BehavioursReads only; receives in-app notifications (ParentCreatedin-app, event-queue-map.ts:37); contacts office for any change.
PermissionsNone defined for parents (OQ-10); UI shows read-only surfaces.
Key screens(forward-looking) Children list → child overview.

5. Student Self — "Meera, Grade 6"

Profile11s; uses the app for homework/results (other modules).
GoalsSee her own class, academic history (promotions), and documents; keep her avatar current.
BehavioursRead-only; avatar upload via POST /users/:id/avatar (users.controller.ts:95-102) (forward-looking).
PermissionsNone in code for self-service students (OQ-1).
Key screens(forward-looking) My Profile → academic history, documents.

Persona → capability matrix (derived from permissions constants only)

CapabilityAdminAdmissionTeacherParentStudent
List/search students (student.read)
Create student (student.create)
Update profile (student.update)
Delete (soft) (student.delete)
Transfer / graduate / archivevia student.update semantics
Upload documentsvia file.upload + student.update (permissions.constants.ts:87)
Bulk import(planned) — no student.import constant exists (blueprint lists it, code doesn't; permissions.constants.ts has only the four student.*)
Link parentsvia parent routes (no parent.* perms — OQ-10)
Self view(planned) OQ-1(planned) OQ-1

Notes:

  • student.promote / student.import are in the blueprint (04-Modules/Students.md:70-76) but absent from permissions.constants.ts — flag if import UI needs a dedicated gate.
  • The bulk controller (bulk.controller.ts:28-31) is JWT-only today — import is technically open to any authenticated user until RbacGuard lands (OQ-4).