NOVERA.Software

03 · Architektúra

Jedna aplikácia, štyri vrstvy.

Rozhranie

Razor PagesBez frameworkuBez krokov zostaveniaDizajnové tokeny21 zdieľaných ovládacích prvkov5 jazykovMobile-first

Moduly

Hlavná kniha, záväzky a pohľadávkyBankaDPHZostavyInvestícieDocument AIE-mailSprávyPlánovačPoznámkyNotifikácie

Služby

Účtovací mechanizmusFinančné úložiskoMechanizmus DPHÚložisko zostávInvestičný mechanizmusDopĺňanie dokladovCudzie menyPreklad82 služieb

Dáta

SQL ServerHQFLAUEUJazykový katalógRučne písané SQLViazané parametreBez ORM

Brána AI

  • Jedna služba pre každé volanie
  • Predvolený model Claude Sonnet 4.5
  • Kľúč výhradne z prostredia
  • Kľúč ani obsah sa nezapisujú do logu

Externé služby

  • Výmenné kurzy ECB
  • Zdroj trhových cien
  • Transakčný e-mail
  • SMS brána
  • Web Push

Na pozadí

  • Kontrola pripomienok
  • Doručovanie notifikácií
  • Triedenie doručenej pošty
  • Vyhľadávač faktúr

Opis platformy

Architektúra platformy

NOVERA je jedna aplikácia ASP.NET Core 8 postavená na Razor Pages, nasadzovaná ako jedno zostavenie (assembly), a vo svojom základe je jednoduchá. Približne 320 súborov C# a Razor obsahuje asi 182 000 riadkov aplikačného kódu, ktorý podporuje 82 služieb a zhruba 22 000 riadkov štýlov.

Dve voľby určujú všetko ostatné.

  • Projekt obsahuje práve jeden odkaz na balík a žiadny nový balík nemožno pridať.
  • V celom riešení nie je žiadny objektovo-relačný mapovač, žiadny front-endový framework ani žiadny krok zostavenia.

Prístup k dátam. Všetko SQL je písané ručne, v doslovných interpolovaných reťazcoch s typovými, viazanými parametrami vo všetkých prípadoch. Jediný odkaz na balík existuje kvôli klientskej knižnici SQL, ktorú prináša; projekt nepoužíva žiadny mapovač.

  • Výhoda: každý príkaz, ktorý systém vykoná, sa dá prečítať, vysvetliť a vyladiť. Pri dvadsať rokov starej hlavnej knihe s nezvyčajnými konvenciami je to veľmi dôležité.
  • Cena: správnosť stojí na disciplíne namiesto frameworku, a preto existuje sada kontrolných brán opísaná v časti Vývoj.

Front-end. Čisté HTML a CSS s asi tuctom malých modulov v čistom JavaScripte a bez bundlera.

  • Súbor tokenových štýlov definuje paletu, rozostupy a zaoblenia; aplikačný súbor štýlov na ňom stavia; tretí súbor obsahuje body zlomu a nikdy nič neprefarbuje.
  • Dvadsaťjeden zdieľaných čiastkových zobrazení (partials) Razor slúži ako opakovane použiteľné ovládacie prvky (stránkovanie, otočná karta, panel s detailom, prehliadač dokumentov, editor polí, štítok subjektu, editor formátovaného textu a ďalšie), takže pravidlo sa nastaví na jednom mieste a všade sa zdedí.
  • Vzhľad tvorí tmavomodrá a zlatá identita s typografiou hostovanou na vlastnom serveri, rozvrhnutá mobile-first do piatich pomenovaných pásiem obrazovky, s jedným navigačným prvkom viditeľným naraz a dotykovými cieľmi s veľkosťou štyridsaťosem pixelov.

Jazyky a práca na pozadí. Rozhranie hovorí piatimi jazykmi s 3 196 kľúčmi, ktoré sa menia spoločne ako jeden balík; názvy uložené v databáze sa prekladajú prostredníctvom prekladača s vyrovnávacou pamäťou namiesto opätovného zadávania kľúčov. V aplikácii bežia štyri služby na pozadí: pripomienky, notifikácie, triedenie e-mailov a vyhľadávač faktúr.

Bezpečnosť sleduje rovnakú konzervatívnu líniu:

  • autentifikácia založená na cookies, pričom subjekt sa prenáša ako nároky (claims);
  • heslá hašované algoritmom PBKDF2-SHA256 s 210 000 iteráciami;
  • prihlasovanie s obmedzenou frekvenciou a relácie, ktoré vypršia po dvoch hodinách;
  • každé tajomstvo v systémovej premennej prostredia, nikdy v súbore poskytovanom webovým serverom;
  • nedôveryhodné HTML sanitizované všade, kde sa vykresľuje;
  • všetka diagnostika SQL spúšťaná nad produkčnými katalógmi je podľa pravidla iba na čítanie.