First Understand It, Then Modernize It
We started where a takeover has to start: learning the system well enough to change it safely.
From there we ran technology modernization, bringing the platform up to current versions rather than letting it drift further behind. It's unglamorous work, but it keeps a codebase hirable, patchable, and secure. It's the difference between a system that can be maintained and one that can only be replaced.
The larger piece was the backend. We rewrote the REST API in .NET, giving the platform a clean, current foundation for everything built on top of it. A rewrite on a live system is the moment most handovers go wrong, so we did it deliberately and in step with the existing application. The running product was never the thing being experimented on.
Knowing Who's Free, and When
The first major addition was a resourcing module with a calendar-based interface.
Resourcing is where design studios lose time without noticing. A designer is promised to two projects in the same week, a specialist sits idle while another job waits on them, and nobody spots it until a deadline has already slipped. Put it on a calendar and the conflict shows up before it costs anything.
That's the real deliverable here. It isn't a feature so much as the ability to see next week before it happens, instead of explaining it afterward.
From Plan, to Task, to Cost Code
We then built out task tracking, planning, and execution, so each project's work lives in the same place as the people assigned to it.
Alongside it came an accounting code-tracking tool, which closes the loop that matters most to whoever signs off the budget. Hours and cost stop being two separate records reconciled at month end. They become one picture, current enough to act on, so the firm knows what each project really costs while there's still time to do something about it.
A Stack Chosen to Stay Maintainable
The platform runs on .NET, Angular, TypeScript, and MS SQL Server, a deliberately mainstream and well-supported combination.
On a system meant to run for years and pass between teams, that's a feature in itself. It keeps hiring straightforward, keeps upgrade paths open, and means the next developer who opens the codebase finds something familiar rather than something clever.