Skip to content

Accounts & roles

Authentication uses Better Auth (email + password). Four roles exist, implemented in web/src/lib/server/guard.ts and the seed (web/scripts/seed_accounts.ts).

Role See lessons Messages Admin tab User management Parent portal
admin all βœ… βœ… βœ… β€”
director all βœ… ❌ ❌ β€”
teacher own* βœ… ❌ ❌ β€”
parent parent portal ❌ ❌ ❌ βœ…

* teacher filtering is applied when the user is teacher (listLessons(teacherId) + sessions.teacher_id filter).

Demo accounts (password: demo1234)

Role Email Display name
Admin [email protected] NEXORA Admin
Director [email protected] School Director
Teacher [email protected] Rania Khalil
Parent (2 children) [email protected] M. Mansour
Parent [email protected] A. Al-Rashidi
Parent [email protected] F. Hassan

The login page offers one-click accounts: clicking an account fills the form (password is pre-filled), you just press Sign In β†’.

Administrative rights (Admin zone)

  • admin only: user management, parent–student links, pipeline launch.
  • Staff (teacher, admin, director): classes / sessions / students management, video upload, CSV import β†’ pipeline.

The 3 demo subjects

One class β€œMarch 2026”, 31 students (S001–S031), 15 lessons = 3 subjects Γ— 5:

Subject Videos Dates
Islamic Education (SUB-ISLAM) islam_march_01..05.mp4 2026-03-02 / 03-16
Mathematics (SUB-MATH) math_march_01..05.mp4 2026-03-03 / 03-17
Arabic (SUB-ARAB) arab_march_01..05.mp4 2026-03-04 / 03-18

The demo annotations are synthetic but deterministic (seed 42 + lesson index): fully replayable (see processing/scripts/generate_march_data.py).