NOVERA.Software

03 · Architecture

One application, four layers.

Interface

Razor PagesNo frameworkNo build stepDesign tokens21 shared controls5 languagesMobile-first

Modules

Ledger & AP/ARBankingVATReportsInvestmentsDocument AIEmailMessagingPlannerNotesNotifications

Services

Posting engineFinance storeVAT engineReports storeInvestment engineDocument fillFXTranslation82 services

Data

SQL ServerHQFLAUEULanguage catalogHand-written SQLBound parametersNo ORM

AI Gateway

  • One service, every call
  • Claude Sonnet 4.5 default
  • Key from environment only
  • No key or payload logged

External Services

  • ECB exchange rates
  • Market price feed
  • Transactional email
  • SMS gateway
  • Web Push

Background

  • Reminder sweep
  • Notification delivery
  • Inbox triage
  • Invoice scout

Platform description

Platform architecture

NOVERA is one ASP.NET Core 8 application built on Razor Pages and deployed as a single assembly, and it is kept simple underneath. Roughly 320 C# and Razor files hold about 182,000 lines of application code, supported by 82 services and some 22,000 lines of stylesheet.

Two choices shape everything else.

  • The project carries exactly one package reference, and no new package may be added.
  • There is no object-relational mapper, no front-end framework and no build step anywhere in the solution.

Data access. All SQL is hand-written, in verbatim interpolated strings with typed, bound parameters throughout. The one package reference is there for the SQL client library it brings; the project uses no mapper.

  • Benefit: every statement the system issues can be read, explained and tuned. That matters a great deal against a twenty-year-old ledger whose conventions are unusual.
  • Cost: correctness rests on discipline instead of a framework, which is why the gate suite described under Engineering exists.

Front end. Plain HTML and CSS with about a dozen small vanilla JavaScript modules and no bundler.

  • A token stylesheet defines the palette, spacing and radii; the application stylesheet builds on it; a third file holds the breakpoints and never re-colours anything.
  • Twenty-one shared Razor partials act as reusable controls (the pager, flip card, drill panel, document viewer, field editor, entity chip, rich text editor and others), so a rule is fixed in one place and inherited everywhere.
  • The look is a dark navy and gold identity with self-hosted typography, laid out mobile-first across five named screen bands, with one navigation surface visible at a time and forty-eight pixel touch targets.

Languages and background work. The interface speaks five languages, with 3,196 keys that move together as one bundle; names held in the database are translated through a cached translator instead of being re-keyed. Four background services run inside the application: reminders, notifications, email triage and the invoice scout.

Security follows the same conservative line:

  • cookie-based authentication, with the entity carried as claims;
  • passwords hashed with PBKDF2-SHA256 at 210,000 iterations;
  • rate-limited sign-in, and sessions that expire after two hours;
  • every secret in a system environment variable, never in a web-served file;
  • untrusted HTML sanitised wherever it renders;
  • all SQL diagnostics written against live catalogs read-only by rule.