ADR-001: Backend Technology — .NET 8 / C#
Status: Accepted Date: 2026-03-16
Context
PSSaaS needs a backend technology stack for porting ~30 years of PowerBuilder business logic to a modern SaaS platform. The business logic is heavily financial (BestEx pricing, pooling, risk/hedging) and requires precise decimal arithmetic, strong typing, and robust SQL Server interoperability.
Options considered:
- .NET 8 / C# — Strongly typed, OOP, excellent SQL Server support, mature enterprise ecosystem
- Node.js / TypeScript — Fast development, but weak decimal precision and less mature ORM landscape for SQL Server
- Python — Already used for PowerSeller X, but weaker typing and not ideal for porting OOP-heavy PowerBuilder code
- Java — Viable but no organizational experience, and .NET has better SQL Server tooling
Decision
Use .NET 8 / C# as the backend technology for PSSaaS.
Key factors:
- Closest heritage to PowerBuilder: Strongly typed, OOP, class-based architecture maps naturally from PB NVOs to C# classes
- Superior decimal precision:
decimaltype is native and exact — critical for financial calculations (BestEx, LLPAs, pooling) - Excellent SQL Server interop: Entity Framework Core provides first-class SQL Server support, database-first scaffolding, and migration tooling
- Mature enterprise ecosystem: Authentication, authorization, dependency injection, middleware pipeline — all built in
- Strong async/await model: Necessary for scalable SaaS with concurrent tenant requests
Consequences
Positive:
- Natural migration path from PowerBuilder OOP patterns to C# OOP patterns
- EF Core scaffolds the existing ~170-table schema immediately
- .NET 8 is LTS with strong Microsoft support and ecosystem
- Excellent tooling (Visual Studio, Rider, dotnet CLI)
Negative:
- Different stack from PowerSeller X (Python/FastAPI) — no shared business logic libraries
- Shared domain concepts (LLPA calculations, MISMO mappings) must be defined in language-neutral specs and implemented independently in each stack
- Team must learn .NET ecosystem (Rudy's background is PowerBuilder)