Přeskočit obsah

Uživatelé a Role

MVP Scope (2026-04-22)

Dvě třídy. Digitální třídnice. Seznam žáků s kontakty.

Testovací verze pro Kentaur (4.+5. ročník) a Phenix (6.+7. ročník). Většina učitelů učí v obou → přepínání tříd je první-třídní UX. Cíl: nahradit papírovou třídnici digitální verzí, kterou učitelé budou chtít používat. Data založí vývojář ručně v Supabase — žádné admin UI v MVP.


Učitel (Průvodce)

"Chci učit, ne klikat v aplikaci."

Device: primárně telefon (na hodině), sekundárně desktop (večer příprava). Mobile-first + responsive, ne "roztažený mobil".

Třídnice — denní rutina

ID Story Akceptace Spec / Status
U-01 Otevřu app a rovnou jsem v aktuální hodině. Systém podle času + rozvrhu najde probíhající slot. Pokud učím v obou třídách ve stejném slotu → vybere tu, kam jsem přiřazený. Fallback: nejbližší budoucí hodina dne. V hlavičce je class switcher — kdykoliv přepnu. _EXAMPLE-morning-attendance · Implemented
U-02 "Kdo chybí?" → tapnu 1-2 jména → hotovo za 5 sekund. Default: všichni přítomní. Seznam žáků, každý s jedním tapem přepíná P → N → Pozdě → Omluven → P. Žádné 4 tlačítka per řádek. _EXAMPLE-morning-attendance · Implemented
U-03 Další hodina automaticky přebírá docházku z předchozí. Slot 2+ zobrazí stav z předchozího slotu. Upravím jen změny (kdo přišel, kdo odešel). _EXAMPLE-morning-attendance · Implemented
U-04 Přidám téma → přiřadím celému ročníku jedním chipem. "Přidat téma" → text → chips [4. ročník] [5. ročník] [individuální žák]. Tap na chip = assignment. — · Ready for /define
U-05 Anička (5. ročník) dneska pracuje s čtvrťáky. Přiřadím Aničku k tématu 4. ročníku. Žák může být jen u jednoho tématu v jednom slotu. — · Ready for /define
U-06 Vidím "Nepřiřazení" — žáci, kteří nemají žádné téma. Safety net: pod seznamem témat je sekce s žáky bez přiřazení. Ideálně prázdná. — · Backlog
U-07 Na konci dne vidím, které hodiny mám kompletní. Dnes / týden (desktop): každý slot má dva vizuální indikátory — téma vyplněno, docházka zapsána. Chybějící = prázdné. — · Backlog

Evidence žáků (read-only)

ID Story Akceptace Spec / Status
U-08 Najdu žáka a vidím jeho kontakt na rodiče. Seznam žáků → klik na jméno → detail s ročníkem a zákonnými zástupci. Tap na telefon = volá. Tap na email = píše. — · Implemented (kód)

Rodič

V MVP nemá přístup do aplikace. Kontakty jsou v evidenci pro učitele.

Po MVP (vrstva roadmapy): 1. Omlouvání nepřítomnosti 2. Odchody a vyzvedávání 3. Feed — co dítě dělalo ve škole


Role v systému

Role (DB enum) Kdo MVP Budoucnost
teacher Průvodce / třídní učitel Aktivní + příprava, voice, tracking kompetencí
parent Zákonný zástupce — (jen kontakt v evidenci) Omlouvání, odchody, feed
director Ředitel — (data zakládá vývojář) Admin UI, statistiky, schvalování
office Kancelář Evidence, exporty, ŠkolaOnline sync
pending Nový uživatel Čekací obrazovka Onboarding flow

Roadmap vrstev (po MVP, v pořadí priority)

Těsně po MVP ("velmi brzy")

  1. Příprava na hodinu — učitel si dopředu zadá plán témat per ročník; na hodině se předvyplní
  2. Audio debrief — hlasové poznámky (učitel mluví k dětem → AI rozpozná přiřazení témat; reflexe po hodině)
  3. Mimořádné dny — "Celá škola do lesa" = override napříč třídami, jedna celodenní docházka místo per-slot
  4. Zastupování — převzetí hodiny jiného učitele
  5. Družina — společná pro obě třídy, jednodušší UX (jen docházka)

Později

  1. Omlouvání rodiči → auto "O" v docházce
  2. Odchody a vyzvedávání
  3. Feed pro rodiče
  4. Tracking kompetencí / progress žáka
  5. MŠMT export, OpenAPI, MCP wrapper, AI integrace

Data setup pro testování

Vývojář založí ručně v Supabase (ne admin UI, ne seed v gitu):

  • 2 třídy: Kentaur (4.+5.), Phenix (6.+7.)
  • ~24 žáků s přiřazením do třídy a ročníkem
  • Rozvrh (den × slot → předmět × třída)
  • Učitelé přiřazení k třídám přes class_staff
  • Zákonní zástupci s kontakty (email, telefon, vztah)

Učitelé se přihlásí přes Google OAuth. Propojení auth.usersprofiles přes email.


Living document. Stories se rozšiřují s každou vrstvou roadmapy.