Rozhodnutí: Feed jako hlavní obrazovka rodiče
Problém
Proč by rodič chodil do aplikace každý den? Dashboard s tlačítky nestačí. Potřebujeme "pull mechanismus" — něco, co rodiče vtáhne a dá mu důvod se vracet.
Rozhodnutí: Scrollovací Feed (à la Instagram)
Výchozí landing page rodiče je chronologický feed o jeho dětech a školních událostech.
Proč
- Rodič → dítě: Při vyzvedávání se dívám do apky a vím, na co se zeptat. "Tak jaký byl ten projekt o vesmíru?" místo "Co jste dělali?" → "Nevím."
- Rodič → učitel: Vidím, že učitel fotí práce, eviduje → cítím hodnotu školy → důvěra.
- Učitel → rodič: Učitel ví, že rodič reaguje → motivace evidovat → řeší riziko #10 "kdo krmí AI".
- Engagement loop: Appka žije, rodič se vrací, data pro AI rostou.
Struktura feedu
┌─────────────────────────────────┐
│ 📌 Souhrn od poslední návštěvy │
│ "Od včera: 📸 2 nové fotky, │
│ ✅ Přítomna, 🍽️ Oběd č. 2" │
├─────────────────────────────────┤
│ 📸 Evidence (14:30) │
│ [Fotka práce] │
│ "Anička — Projekt vesmír" │
│ 🏷️ Přírodověda · Týmová práce │
├─────────────────────────────────┤
│ 📢 Zpráva školy (12:00) │
│ "Zítra nezapomeňte gumáky!" │
├─────────────────────────────────┤
│ 🍽️ Jídelníček (11:00) │
│ "Oběd: Kuřecí řízek, bramborová│
│ kaše, salát" │
├─────────────────────────────────┤
│ ✅ Docházka (8:05) │
│ "Anička dorazila v 8:05" │
└─────────────────────────────────┘
💬 [Sofie] ← FAB overlay
Typy feed items
| Typ | Zdroj | Ikona | Příklad |
|---|---|---|---|
| Adaptivní souhrn | AI (pinned) | 📌 | Souhrn od poslední návštěvy (auto-granularita) |
| Přehled zítřka | AI (od 14:00) | 🔮 | "Zítra: Škola do 13:30, plavání, přineste gumáky!" |
| Evidence/fotka | Učitel / Služba | 📸 | Fotka práce + AI štítek |
| Docházka | Systém | ✅ | "Dorazila v 8:05" |
| Družina | Vychovatel/ka | 🏠 | "Anička je v družině. Odchod: 15:30." |
| Kroužek | Systém / Lektor | 🎯 | "Dnes: Šachy 14:00" / "ZRUŠENO" |
| Zpráva školy | Ředitel / Učitel | 📢 | "Zítra výlet — gumáky!" |
| Jídelníček | strava.cz (cron) | 🍽️ | "Oběd č. 1: Řízek" |
| Akce / kalendář | Kalendář | 📅 | "Za 3 dny: Třídní schůzka" |
| Odpověď na dotaz | Sofie / Učitel | 💬 | "Odpověď na váš dotaz" |
| Platba (Fáze 2) | Pohoda (sync) | 💳 | "Školné únor: zaplaceno ✅" / "Splatnost: 15.2." |
Multi-child
Rodič s více dětmi vidí prolínající se feed s avatarem/tagem dítěte:
[👧 Anička] 📸 Projekt vesmír (14:30)
[👦 Tomáš] ✅ Dorazil v 8:02 (8:02)
[👧 Anička] ✅ Dorazila v 8:05 (8:05)
[🏫 Škola] 📢 Zítra gumáky!
Filtr: "Zobrazit jen Aničku" / "Zobrazit jen Tomáše" / "Vše".
Sofie Overlay (FAB)
- Plovoucí tlačítko vpravo dole (Floating Action Button).
- Klik → otevře chat panel (slide-up nebo sidebar).
- Vždy dostupný z jakékoliv obrazovky.
- Badge s počtem nepřečtených zpráv.
Přehled zítřka (🔮 Tomorrow Preview)
Každý den od cca 14:00 se ve feedu objeví karta s přehledem následujícího dne:
┌─────────────────────────────────┐
│ 🔮 Zítra — Úterý 11. února │
├─────────────────────────────────┤
│ 🕒 Škola do: 13:30 │
│ 🍽️ Oběd: Kuřecí řízek, kaše │
│ 🎯 Kroužek: Šachy 14:00–15:00 │
├─────────────────────────────────┤
│ ⚠️ NESTANDARDNÍ: │
│ 📌 Plavání — přines plavky+ručník│
│ ❌ Nepodepsaný souhlas s výletem│
└─────────────────────────────────┘
- Běžné položky: Rozvrh, konec školy, oběd, plánovaný odchod, kroužky.
- Zvýrazněné výjimky (⚠️): Výlet, plavání, "přineste si...", škola v přírodě.
- Akce potřeba (❌): Nepodepsané souhlasy, nezaplacené platby, chybějící dokumenty.
- Generuje AI z rozvrhu, kalendáře a školních dat.
- Push notifikace: "Sofie: Zítra plavání — nezapomeňte plavky!"
Technické poznámky
- Realtime: Supabase Realtime subscriptions → nový item se objeví bez refreshe.
- Infinite scroll: Načítání po dávkách (20 items), lazy loading fotek.
- Privacy: Feed zobrazuje POUZE děti přihlášeného rodiče (RLS policy).
- Offline: PWA cache → poslední feed items dostupné i bez signálu.
Adaptivní souhrn ("Od poslední návštěvy")
- Systém trackuje
last_seen_attimestamp pro každého rodiče. - Při otevření appky AI vygeneruje souhrn za období od
last_seen_at:- < 4 hodiny: Live stav — "Právě probíhá: Matematika — zlomky 🍎"
- 1 den: "Včera: 📸 2 nové práce, oběd č. 2, odchod 15:30."
- 1 týden: "Minulý týden: 📸 5 prací, docházka 100 %, výlet na Šumavu." → rozklikne po dnech.
- 3+ týdny: "Za 3 týdny: 📸 12 prací, 3 omluvenky, docházka 92 %." → po týdnech → dnech → detail.
- Zero config — rodič nemusí nastavovat frekvenci, vše automaticky.
- Push re-engagement: Pokud se rodič nepřihlásí 3+ dny → "Anička měla zajímavý týden — mrkněte se! 📸"
Důsledky pro architekturu
- Dashboard (z Plán (Fáze 1)) se mění na Feed pro rodiče.
- Ředitel a učitel si ponechávají klasický dashboard.
work_itemstabulka je primární zdroj dat pro feed items.- Nový koncept:
feed_eventsview (nebo materializovaný pohled), který agreguje data z různých tabulek (evidence, docházka, družina, kroužky, zprávy) do jednoho chronologického streamu.
Rozhodnutí: Skupinový chat / Komentáře — NE
Zvážení
Měli bychom umožnit rodičům diskutovat mezi sebou pod příspěvky (školními oznámeními, fotkami)?
Rozhodnutí: Ne. Použít reakce místo diskuze.
Důvody
- Moderace — kdo řeší, když se dva rodiče pohádají? Ředitel? → Víc práce, ne míň.
- WhatsApp už existuje — škola má WhatsApp komunity, kde si rodiče mohou povykládat a postěžovat si. Neporazíme ho a ani nechceme.
- GDPR — rodič napíše o cizím dítěti → právní problém.
- Scope creep — budujeme informační systém školy, ne sociální síť.
- "Negativity bias" — veřejná diskuze přitahuje stížnosti, ne pochvaly.
Co místo toho
| Funkce | Popis | Moderace? |
|---|---|---|
| Reakce (❤️ 👏) | Rodič "lajkne" fotku práce dítěte. Učitel vidí počet reakcí → motivace. | Žádná potřeba |
| Strukturované odpovědi | Škola: "Kdo jede na výlet?" → Tlačítka Ano/Ne. Ne volný text. | Žádná potřeba |
| Otázky → Sofie | Rodič má dotaz k oznámení? Zeptá se Sofie, ne ostatních rodičů. | AI + eskalace |
| Privátní zpráva učiteli | Potřebuji řešit něco osobně → přes Sofii nebo přímo učiteli. | Učitel |
[!IMPORTANT] Pro volné diskuze mezi rodiči slouží WhatsApp komunity školy. Kosmo se zaměřuje na informace o dítěti, ne na sociální interakci mezi rodiči.