Skip to content

School mode: username + kid-friendly password login #28

@benSlaughter

Description

@benSlaughter

Support many children (a whole class) with simple, child-friendly authentication.

This is Mode 3 (School) of the 3-tier profile system. See docs/ROADMAP.md.

How it works

  • Admin sets profile_mode to school in settings
  • On app launch, a login screen asks for username + password
  • Login is designed for 10-year-olds — not a corporate form

Kid-friendly password options (pick one or offer choice per child)

  1. Colour code — pick 4 colours from a grid (e.g. red-blue-green-yellow)
  2. Picture password — tap 4 icons in order from a grid of 12
  3. Short PIN — 4-digit number pad (simple, familiar)
  4. Text password — traditional, for older/confident kids

Whichever method, keep it visual, big buttons, no keyboard required if possible.

Username

  • Set by admin (first name, or nickname)
  • Shown on login screen as a list or typed in (depending on class size)
  • For small groups: show avatar cards like family mode, but require password after tapping
  • For large groups: type-to-search username list

Admin features

  • Create/edit/delete student profiles (name, avatar, password method)
  • Reset password for any student
  • View all students' progress in a table/grid
  • Bulk import students (CSV: name, optional username)
  • Optional: group students by class/year

Database changes

  • Add to profiles: username (unique), password_hash, password_type (colour/picture/pin/text)
  • Add settings key: profile_mode = school
  • Session management: student sessions (separate from admin sessions)

Security notes

  • Student passwords are hashed (bcrypt) same as admin
  • Student sessions are cookies, same pattern as admin auth
  • No email, no personal data beyond first name
  • Admin can see/reset passwords but never view them

Prerequisites

Metadata

Metadata

Assignees

No one assigned

    Labels

    devCode, infra, testing, performancelong-termScale & transform — 3-6 monthsproductFeature or UX enhancement

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions