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.