NOVERA.Software

03 · Architektur

Eine Anwendung, vier Schichten.

Oberfläche

Razor PagesKein FrameworkKein Build-SchrittDesign-Tokens21 gemeinsame Steuerelemente5 SprachenMobile-first

Module

Hauptbuch, Kreditoren & DebitorenBankUmsatzsteuerBerichteInvestmentsDocument AIE-MailMessagingPlanerNotizenBenachrichtigungen

Dienste

Buchungs-EngineFinanzspeicherUmsatzsteuer-EngineBerichtsspeicherInvestment-EngineBelegbefüllungDevisenÜbersetzung82 Dienste

Daten

SQL ServerHQFLAUEUSprachkatalogHandgeschriebenes SQLGebundene ParameterKein ORM

KI-Gateway

  • Ein Dienst für jeden Aufruf
  • Standardmodell Claude Sonnet 4.5
  • Schlüssel nur aus der Umgebung
  • Weder Schlüssel noch Nutzdaten protokolliert

Externe Dienste

  • EZB-Wechselkurse
  • Marktpreis-Feed
  • Transaktionale E-Mail
  • SMS-Gateway
  • Web Push

Hintergrund

  • Erinnerungsdurchlauf
  • Zustellung von Benachrichtigungen
  • Posteingangs-Triage
  • Rechnungs-Scout

Plattformbeschreibung

Plattformarchitektur

NOVERA ist eine einzige ASP.NET Core 8-Anwendung auf Basis von Razor Pages, die als eine einzige Assembly ausgeliefert wird, und sie ist unter der Oberfläche einfach gehalten. Rund 320 C#- und Razor-Dateien enthalten etwa 182.000 Zeilen Anwendungscode, gestützt auf 82 Dienste und rund 22.000 Zeilen Stylesheet.

Zwei Entscheidungen prägen alles Weitere.

  • Das Projekt enthält genau eine Paketreferenz, und es darf kein neues Paket hinzugefügt werden.
  • Es gibt nirgendwo in der Solution einen objektrelationalen Mapper, ein Frontend-Framework oder einen Build-Schritt.

Datenzugriff. Sämtliches SQL ist handgeschrieben, in wörtlichen interpolierten Zeichenfolgen (verbatim interpolated strings) mit durchgängig typisierten, gebundenen Parametern. Die eine Paketreferenz besteht wegen der SQL-Clientbibliothek, die sie mitbringt; das Projekt verwendet keinen Mapper.

  • Vorteil: Jede Anweisung, die das System absetzt, kann gelesen, erklärt und optimiert werden. Das ist bei einem zwanzig Jahre alten Hauptbuch mit ungewöhnlichen Konventionen sehr wichtig.
  • Preis: Die Korrektheit beruht auf Disziplin statt auf einem Framework, weshalb es die im Abschnitt Engineering beschriebene Gate-Suite gibt.

Frontend. Reines HTML und CSS mit rund einem Dutzend kleiner Vanilla-JavaScript-Module und ohne Bundler.

  • Ein Token-Stylesheet definiert Farbpalette, Abstände und Radien; das Anwendungs-Stylesheet baut darauf auf; eine dritte Datei enthält die Breakpoints und färbt nie etwas um.
  • Einundzwanzig gemeinsame Razor-Partials dienen als wiederverwendbare Steuerelemente (Pager, Flip-Karte, Drill-Panel, Dokumentbetrachter, Feldeditor, Mandanten-Chip, Rich-Text-Editor und weitere), sodass eine Regel an einer Stelle festgelegt und überall übernommen wird.
  • Das Erscheinungsbild ist eine Identität in dunklem Marineblau und Gold mit selbst gehosteter Typografie, Mobile-first über fünf benannte Bildschirmbereiche angelegt, mit jeweils nur einer sichtbaren Navigationsfläche und Touch-Zielen von achtundvierzig Pixeln.

Sprachen und Hintergrundarbeit. Die Oberfläche spricht fünf Sprachen, mit 3.196 Schlüsseln, die sich als ein einziges Bundle gemeinsam bewegen; in der Datenbank gehaltene Namen werden über einen zwischengespeicherten Übersetzer übersetzt, statt neu erfasst zu werden. Vier Hintergrunddienste laufen innerhalb der Anwendung: Erinnerungen, Benachrichtigungen, E-Mail-Triage und der Rechnungs-Scout.

Die Sicherheit folgt derselben konservativen Linie:

  • cookiebasierte Authentifizierung, wobei der Mandant als Claims mitgeführt wird;
  • mit PBKDF2-SHA256 und 210.000 Iterationen gehashte Passwörter;
  • ratenbegrenzte Anmeldung und Sitzungen, die nach zwei Stunden ablaufen;
  • jedes Geheimnis in einer Systemumgebungsvariablen, niemals in einer vom Webserver ausgelieferten Datei;
  • Bereinigung von nicht vertrauenswürdigem HTML überall, wo es gerendert wird;
  • per Regel schreibgeschützte SQL-Diagnosen gegen produktive Kataloge.