Architektura Aplikace Kosmo
Tento dokument popisuje navrhovaný technologický stack a high-level architekturu aplikace.
Technologický Stack: "Vibe Stack"
Zvolili jsme moderní, flexibilní stack zaměřený na rychlost vývoje, skvělé UX a snadnou škálovatelnost.
Frontend & Backend (Next.js)
- Framework: Next.js 14+ (App Router)
- Důvod: Průmyslový standard, React server components, skvělý routing. Umožňuje psát backend (API routes) přímo v projektu.
- Jazyk: TypeScript
- Důvod: Typová bezpečnost, autocomplete, prevence chyb.
- UI/Styling: Tailwind CSS + Shadcn/ui + Framer Motion
- Důvod: Umožňuje vytvořit prémiový "Apple-like" design s animacemi.
- PWA (Progressive Web App):
- Funkce: Možnost "Nainstalovat na plochu" na iOS/Android.
- Notifikace: Web Push API (přes Service Workers) pro nativní notifikace na mobilu i PC.
- Offline: Service Worker + IndexedDB queue pro práci bez signálu (fotky, docházka). Data se synchronizují při obnovení spojení.
- i18n (Dvojjazyčnost):
next-intl— CZ/EN od začátku (bilingvální třídy, expat rodiče). - Hosting: Vercel (optimální pro Next.js).
- Package Manager: pnpm
- Důvod: Rychlost (podobně jako
uvv Pythonu), efektivní správa disku, "industry standard" pro moderní web development.
- Důvod: Rychlost (podobně jako
Data & Auth (Supabase)
- Databáze: PostgreSQL (Managed via Supabase)
- Region: EU Central (Frankfurt) - Nutnost pro GDPR.
- Důvod: Relační data (žáci, třídy), ale s jednoduchým API. Podpora vektorového vyhledávání (pgvector) pro AI.
- Auth: Supabase Auth (Bezpečné přihlašování bez hesel)
- Google OAuth:
- Pro koho: Učitelé (školní účty), rodiče s Androidem / Google účtem.
- Flow: Kliknu na "Přihlásit přes Google" -> Vyberu účet -> Jsem tam.
- Apple Sign In:
- Pro koho: Rodiče s iPhonem (vyžadováno Apple pro App Store).
- Flow: FaceID/TouchID -> Jsem tam.
- Magic Link (Email):
- Pro koho: Všichni ostatní (Seznam.cz, Centrum.cz).
- Flow: Zadáte email -> Přijde vám jednorázový odkaz -> Kliknete -> Jste tam.
- Výhoda: Nikdo si nemusí pamatovat další heslo. Bezpečnější než "heslo123".
- Row Level Security (RLS): Zabezpečení dat přímo v DB (např. "Rodič vidí jen své dítě").
- Ověření Identity (Strategie):
- BankID: Pro MVP zamítnuto (cena/složitost).
- Trusted Device: Fyzické ověření rodiče ve škole (admin potvrdí
is_identity_verified). Následná přihlášení (Google/Apple) jsou považována za důvěryhodná. Kritické akce vyžadují "re-confirmation" v UI.
- Google OAuth:
- Storage: Supabase Storage
- Důvod: Ukládání fotek prací a dokumentů.
- Realtime: Supabase Realtime
- Důvod: Okamžité notifikace pro rodiče (chat, nové zprávy).
AI & Python (Special Agents)
- Hlavní AI: Gemini API (volané z Next.js přes Vercel AI SDK).
- Multimodalita: Gemini umí zpracovat Audio a Obrázky přímo.
- Voice Input: Rodič nahraje vzkaz -> Gemini dostane audio blob -> vrátí text a JSON akci (
{ "action": "excuse_student", "date": "tomorrow" }).
- Specializované úlohy: Python Scripts / Microservice
- Pohoda: XML import/export (mServer).
- ŠkolaOnline: Jednosměrná synchronizace (Master data).
- Důvod: Využití expertní znalosti uživatele v Pythonu a matematice pro složitější analýzy, generování metodik nebo Sokratova průvodce.
- Tooling: uv
- Důvod: Rychlý Python package manager, user choice.
- Integrace: Může běžet jako Supabase Edge Function (Python support in beta) nebo samostatná služba na Modal/Railway.
Marketingový Stack (FÁZE 2)
- Blog: Next.js + MDX (odloženo — MVP řeší WordPress).
- Newsletter: HubSpot Marketing Hub (Free).
- Důvod: Integrace s CRM (Leads), kvalitní editor, GDPR compliance.
Hlavní Moduly (Aplikace)
1. app/(platform)
- Hlavní aplikace pro přihlášené uživatele.
- Rodič: Feed (scrollovací přehled dětí). Sofie chatbot jako FAB overlay.
- Ředitel/Učitel: Dashboard s přehledy a akcemi.
2. app/api
- Backend endpointy pro specifickou logiku, kterou nevyřeší přímé volání Supabase.
- Evidence Ingestion (
/api/evidence/ingest):- Endpoint pro AI agenty a externí nástroje (Make/n8n).
- Přijímá data (např. parsovaný email), ukládá
work_itemjako Draft.
3. structure (Organizace školy)
- Třídy (Triády), Ročníky, Uživatelé.
- Správa rolí a vazeb (Kdo koho učí, kdo je čí rodič).
4. evidence (Srdce systému)
- WorkItems: Evidence prací žáků (úkoly, projekty, testy).
- Hodnocení: Známky, slovní hodnocení, kompetence.
- AI Analýza: Automatické štítkování a návrhy hodnocení.
5. attendance (AI Action)
- Docházka: Validace příchodů/odchodů.
- Vyzvedávání: Chat-based správa ("Dnes vyzvedne babička").
- Omluvenky: Konverzační zadávání omluvenek.
6. surveys (Interaktivní Chat)
- Sběr Dat: "Chatové tlačítka" místo dlouhých formulářů.
- Vyhodnocení: Real-time grafy pro vedení.
7. communication (AI Concierge)
- Sofie Bot: Hlavní rozhraní pro rodiče.
- Funkce: RAG nad daty žáka (Evidence, Docházka) + Knowledge Base školy (ŠVP, Řády).
- Ticket System:
- Pokud AI nevyřeší dotaz, vytvoří "Ticket".
- Routing: AI rozhodne, komu ticket přidělit (Třídní učitel / Jídelna / Ředitel).
- Safety Check: Citlivé akce (Vyzvedávání, Zdraví) vyžadují expliciní potvrzení uživatele (Confirmation UI). AI pouze předpřipraví data, člověk je schválí.
- Email Sender: Notifikace o vyřešení ticketu nebo nové zprávě ze školy.
8. integrations & Externí Nástroje
- CRM: HubSpot (Free):
- Google Integrace: Gmail Extension (logování emailů), Google Calendar Sync (schůzky).
- Evidence Leadů a Rodičů.
- Project Management: Asana (Free):
- Google Integrace: "Turn emails into tasks" (Gmail Add-on), Google Drive attachments.
- Interní řízení školy.
- ŠkolaOnline/Bakaláři (případně).
9. components/ai
- UI komponenty pro interakci s AI (Chat, Generátor reportů).
10. utils
- Excel Export: Knihovna
xlsxneboexceljspro generování reportů. - Google Sheets Export: Využití
googleapispro vytváření tabulek přímo na Drive uživatele. - Date Formatting:
date-fnspro práci s daty a časy.
Deployment & Workflow (CI/CD)
Bezpečný proces nasazování změn.
- Local (Vývoj)
- Kde:
localhost:3000 - Data: Lokální Supabase (Docker)
- Kdo: Vývojář
- Kde:
- Staging (Testování)
- Kde:
staging.sofie.education(Vercel Preview) - Data: Supabase Staging Project (anonymizovaná data nebo testovací set)
- Kdo: Ředitel, vybraní učitelé (UAT testy)
- Kde:
- Production (Ostrý provoz)
- Kde:
app.sofie.education(Vercel Production) - Data: Supabase Production Project (ostrá data)
- Kdo: Všichni uživatelé
- Kde: