Dokumentace
Centrum nápovědyArchitekturaArchitektonické vrstvy
docs/cs/01-architecture/architecture-layers.md
Architektonické vrstvy
OPORA používá vrstvenou architekturu tak, aby výpočetní engine zůstal deterministický, orchestrace v aplikační vrstvě byla explicitní a infrastruktura vyměnitelná.
Vrstva 1 — Klient (UI)
Odpovědnosti
- Renderovat stránky a zachytit uživatelský záměr.
- Spravovat krátkodobý UI stav (formuláře, interakce editoru).
- Volat aplikační vstupní body (server actions, route handlery) bez vnášení business pravidel.
Invarianty
- UI nikdy neobchází guard logiku.
- UI se nestává zdrojem pravdy; perzistentní pravda žije v Projektech.
Vrstva 2 — Aplikace (use-cases)
Odpovědnosti
- Implementovat workflow (vytvořit projekt, editovat, spočítat, exportovat).
- Vynucovat guard logiku: autentizace → org kontext → RBAC → subscription → vlastnictví zdrojů.
- Převádět externí vstupy (DTO) na doménové vstupy (validované, normalizované).
Invarianty
- Veškeré zápisy probíhají přes aplikační use-cases.
- Zpracování chyb je konzistentní a predikovatelné pro klienty.
Vrstva 3 — Doména (business logika)
Odpovědnosti
- Definovat doménové entity a invarianty (Organizace, Projekt, Výpočet).
- Implementovat deterministickou výpočetní logiku jako čistý TypeScript.
- Poskytovat explicitní error typy pro doménové validační chyby.
Invarianty
- Žádné závislosti na síti, databázi ani čase.
- Deterministické výstupy pro deterministické vstupy.
Vrstva 4 — Infrastruktura (adaptéry)
Odpovědnosti
- Perzistence dat (Prisma/Postgres).
- Autentizace a správa session (Supabase).
- Integrace: billing provider, pipeline pro render exportů, email, observability.
Invarianty
- Infrastruktura může selhat; aplikace musí selhání bezpečně ošetřit a zobrazit.
- Infrastrukturní detaily nesmí prosakovat do domény.
Průřezová témata
- Observability: tracing a strukturované logy kolem use-cases a exportů.
- Bezpečnost: defense-in-depth napříč middleware, aplikačními guardy a databázovými omezeními.
- Verzování: verze enginu a evoluce schématu jsou zaznamenané a kompatibilní s požadavky na audit.