03 · Architektura
Jedna aplikace, čtyři vrstvy.
Popis platformy
Architektura platformy
NOVERA je jedna aplikace ASP.NET Core 8 postavená na Razor Pages a nasazovaná jako jediné sestavení (assembly); pod povrchem je udržována jednoduchá. Přibližně 320 souborů C# a Razor obsahuje zhruba 182 000 řádků aplikačního kódu, doplněných 82 službami a asi 22 000 řádky stylů.
Dvě volby určují vše ostatní.
- Projekt obsahuje právě jeden odkaz na balíček a žádný nový balíček nesmí být přidán.
- V celém řešení není žádný objektově-relační mapper, žádný front-endový framework ani žádný krok sestavení.
Přístup k datům. Veškeré SQL je psáno ručně, v doslovných interpolovaných řetězcích s typovanými, vázanými parametry všude. Jediný odkaz na balíček existuje kvůli klientské knihovně SQL, kterou s sebou přináší; projekt nepoužívá žádný mapper.
- Přínos: každý příkaz, který systém vydá, lze přečíst, vysvětlit a vyladit. To je velmi důležité u dvacet let staré hlavní knihy s neobvyklými konvencemi.
- Cena: správnost stojí na disciplíně místo na frameworku, a proto existuje sada kontrolních bran popsaná v části Vývoj.
Front-end. Čisté HTML a CSS s přibližně tuctem malých modulů v čistém JavaScriptu a bez bundleru.
- Tokenový styl definuje paletu, rozestupy a zaoblení; aplikační styl na něm staví; třetí soubor obsahuje zlomové body a nikdy nic nepřebarvuje.
- Dvacet jedna sdílených Razor partials slouží jako opakovaně použitelné ovládací prvky (stránkování, otočná karta, panel s rozpadem, prohlížeč dokumentů, editor polí, štítek účetní jednotky, editor formátovaného textu a další), takže pravidlo je stanoveno na jednom místě a všude se dědí.
- Vzhled tvoří tmavě námořnická modř a zlatá s typografií hostovanou na vlastním serveru, rozvržení je mobile-first v pěti pojmenovaných pásmech šířky obrazovky, vždy je viditelná jediná navigační plocha a dotykové cíle mají čtyřicet osm pixelů.
Jazyky a práce na pozadí. Rozhraní hovoří pěti jazyky; 3 196 klíčů se mění společně jako jeden balík a názvy uložené v databázi se překládají přes překladač s mezipamětí místo nového zadávání klíčů. Uvnitř aplikace běží čtyři služby na pozadí: připomínky, oznámení, třídění e-mailů a vyhledávač faktur.
Zabezpečení se drží stejné konzervativní linie:
- ověřování založené na cookie, s účetní jednotkou předávanou jako claims;
- hesla hashovaná algoritmem PBKDF2-SHA256 s 210 000 iteracemi;
- přihlašování s omezenou četností pokusů a relace, které vyprší po dvou hodinách;
- každé tajemství v systémové proměnné prostředí, nikdy v souboru obsluhovaném webem;
- nedůvěryhodné HTML sanitizované všude, kde se vykresluje;
- veškerá diagnostika SQL spouštěná proti produkčním katalogům podle pravidla pouze pro čtení.