Solo-built a full replacement for a legacy C#/.NET 4.8 dealer portal — both systems running on the same production database, processing live orders, with zero downtime and zero schema changes.

The new Django API and the legacy .NET ERP read and write to the same SQL Server tables at the same time. Django maps 42 legacy tables with managed = False — the ORM works normally, but Django never tries to create, alter, or migrate those tables. Two new managed tables were added for asset categorization features the ERP doesn't touch. Both systems process orders in parallel without awareness of each other.
Dealers in Australia, UK, and US each have their own SQL Server database with regional pricing, inventory, and orders. Rather than deploying a separate backend per region, a single Django instance routes every ORM query to the correct database based on the JWT region claim — through a custom middleware + database router pair.
Three repos, one developer — the frontend had to break loudly when the backend API changed. Backend CI generates the OpenAPI spec, dispatches it to the frontend repo, and auto-generates TypeScript types. Contract drift is a build failure, not a silent runtime bug discovered by a dealer.
The SQL Server lives on a separate AWS instance. Every auth lookup crosses the network. A 5-minute LocMemCache on the API server eliminates that round-trip for repeat requests — short enough that ERP-side user changes (disabling an account, changing permissions) still propagate within minutes.
A hard CI gate at 2 MB catches size regressions before they merge — keeps the app fast without relying on manual review to spot bloated imports.
Nine feature modules can turn into a dependency web fast. ESLint rules encode the dependency direction (types → services → hooks → features) and forbid cross-feature imports. Architectural violations fail the build — they don't survive as "we'll fix it later" TODOs.