Legacy financial desktop software to a web platform
A desktop application held years of financial process logic and could only be used from installed machines. It was migrated to a modern full-stack web platform without discarding the rules the business ran on.
- Client
- Financial Institution
- Role
- Full-stack developer — architecture and implementation
- Period
- 2022 — 2024
- Scope
- Desktop-to-web migration
Context
A financial workflow — records, calculations, and multi-step approvals — implemented in a desktop application that required installation and local configuration for every user.
Problem
Access was tied to machines, approvals waited on physical presence, and the logic that mattered most to the business existed only inside the client. Extending it meant re-deploying software to every workstation.
Constraints
Financial calculations had to produce identical results. Historical data had to remain queryable. The migration could not interrupt daily operations, and users had years of habit invested in the old interface.
Approach
Rules were extracted from the client into a documented REST API with a relational model behind it, verified by comparing outputs against the legacy application on historical records before any interface was built.
The web client was then built against that API, with role-based permissions replacing what had previously been implicit trust in whoever was at the machine. Both systems ran in parallel during cutover.
Key decisions
Model the data before designing screens; the desktop layout encoded assumptions that did not deserve to be carried forward.
Verify parity numerically against historical records rather than by user acceptance alone.
Outcome
A web platform accessible without installation, with approvals moving roughly fifty percent faster and the business logic finally documented outside a single executable.
Retrospective
Extracting the API first made the migration boring in the best sense: by the time the new interface appeared, the risky part was already proven.
Flow
Business rules were extracted behind an API first, so old and new clients could run against the same source of truth.