Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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