Technology

Engineered, not assembled.

PPE1 is one coherent system on a modern, mainstream stack — .NET and C# on the back end, React and TypeScript on the front, SQL Server underneath — built to disciplined standards that a technical team can read, run, and extend. No exotic dependencies, no black boxes; the kind of codebase that survives a forensic review.

.NET / C# React / TypeScript API-first SQL Server Stored-procedure data layer Temporal history

One stack, top to bottom

Six Products. One Platform — sharing a single database and identity.

Presentation
React 18 + TypeScript (strict mode) for web & mobile, over a shared UI-agnostic core in an npm-workspaces monorepo — business logic written once. Material UI and RTK Query, built with Vite; the Manager hub is server-rendered Razor / jQuery by deliberate choice.
Identity
A dedicated, stateless authentication service issues one signed JWT — the same issuer, audience, and key validated by every product and the API. Stateless two-factor (no server-side session store), per-session refresh-token rotation, and anti-enumeration throughout.
Application / API
ASP.NET Core (C# / .NET 10) web APIs and MVC in a uniform Controller → Provider → Repository layering — interface-segregated dependency injection throughout, nullable reference types enabled, and source-generated object mapping (Mapperly — no runtime reflection).
Engines
A six-stage Program Engine (chain-of-responsibility) decides eligibility; a Pricing Engine then computes and ranks best execution — the same core behind the web UI, the mobile app, and the Bulk Pricer, with every run replayable field-by-field for audit.
Data
SQL Server behind a stored-procedure data layer (Dapper) — 490+ procedures, minimal inline SQL by policy — with 96 foreign keys enforcing integrity, system-versioned temporal tables for loan history, and soft-deletes throughout.

The standards a technical buyer checks

Discipline that's enforced — in the build, the database, and the code.

Stored procedures, by policy
Effectively all data access runs through ~490 parameterized stored procedures — injection-safe, plan-cached, DBA-tunable. The rare inline statement is a deliberate, reviewed exception, never the default.
Temporal history
System-versioned tables retain full row history automatically — every change preserved and queryable, not bolted on.
Soft deletes, always
Nothing is hard-deleted; deactivation is recoverable, so the data layer never destroys its own history.
Null-safety at compile time
Nullable reference types are enabled, turning a whole class of runtime errors into compiler errors.
Compile-time mapping
Object mapping is source-generated (Mapperly) — no reflection, no runtime mapper — for speed and transparency.
Modern, current tooling
A Vite-built front end and consolidated, patched dependencies — a codebase kept current, not frozen in time.
Referential integrity, enforced
Foreign keys throughout the schema make the database itself reject orphaned or inconsistent data — integrity is guaranteed at the data layer, never left to application code to remember.
Test-gated by CI
Every solution ships an automated test suite wired to continuous integration — 1,700+ tests gate each change, with golden-master coverage guarding the calculation core against regression.

API-first — built to integrate

The pricing logic lives in a pure, UI-agnostic API. Nothing is welded to a screen
— which is exactly what lets PPE1 sit inside your stack, not just beside it.

One engine, many faces
The web app, the mobile app, and the Bulk Pricer all call the same pricing API. The brain is written once; every surface is a thin client over it.
Built to be embedded
Because pricing is API-first, it's designed to run behind your own LOS or POS — originators price without ever leaving your system, authenticated by the shared identity token.
One identity, everywhere
A dedicated service issues a signed JWT trusted by every product and the API — single sign-on across web, mobile, and anything built on top.
Integration-ready groundwork
A documented API surface, a session handshake for external entry, and a stored-procedure data layer — the foundations for LOS connectivity are designed in, not retrofitted later.
The right tool for each surface

The customer-facing pricing experiences are React + TypeScript single-page apps; the Manager admin hub is deliberately server-rendered Razor + jQuery — the proven, pragmatic choice for a dense, form-heavy internal tool. One framework is never forced where another fits better, and every surface still shares the same API and identity underneath.

Don't take our word for it.

Read the full Forensic Code Review — an unflinching, file-level assessment of the architecture, code quality, and ownability of the entire platform.