Mock of B4 — Teacher logs in for the first time

Sources: spec §3.4 B4, prd.md §5 Journey 4.

Invariants enforced in this screen: session persists on device (§3.4 postcondition); classrooms scoped to teacher's assignments (§3.3 AC); first-time land-in-classroom ≤ 10 seconds on a modern phone + reasonable connection (AC1).

Inference flags:

B4 — Teacher first login

Screen 1 — Tap magic link

From the invite (B3), teacher taps the link. Web-based (PRD §4 non-goal: native apps).

System activates the account, binds identity to a User, creates an active session (§3.4 step 2).

Screen 2 — Classroom picker (if ≥2 classrooms)

Teacher is assigned to ≥1 classroom. If multiple, present a picker first (§3.4 step 3).

[single-classroom case: skip picker entirely and land directly in classroom]

Screen 3 — Classroom view (landing)

Teacher lands directly here on a single-classroom case.

Toddler Room

Take or select a photoB5

Screen 4 — Orientation (skippable)

One-or-two-screen orientation: how to send a photo. Skip is a first-class option, not a small dismiss link (§3.4 step 4).

Slide 1 of 2

[content — not specified in spec]

Next →

Slide 2 of 2

[content — not specified in spec]

Done

Skip orientation ← first-class button per spec

Per AC2: orientation is not replayed on subsequent logins.

Error — expired link

Magic link expired. App shows a re-request flow that sends a fresh magic link to the same identity (§3.4 error case). Does not require admin intervention — teacher is never dead-ended (AC3).

Send me a new link

[exact copy — not specified in spec]

Error — already-used link

App shows a login affordance rather than treating it as an error (§3.4 error case). Teacher may just be opening on a new device.