The challenge
3P’s procurement portal was a business-critical AngularJS application with years of accumulated behaviour. Users depended on that behaviour in their daily work, yet the aging frontend made continued development increasingly difficult. Modernization therefore had two equally important goals: create a maintainable technical foundation and protect continuity while the old and new parts of the platform coexisted.
Technical leadership
As tech lead, David set the technical direction and translated the existing application into concrete migration requirements. That meant understanding not only the code, but also the user flows that could not be disrupted. He coordinated implementation work, clarified priorities and milestones, and kept the legacy application and target platform aligned while responsibilities moved between them.
Incremental migration
The portal was not approached as a single replacement project. The migration was divided into controlled increments with explicit boundaries between the AngularJS surface, the new Vue and Nuxt experience, and the .NET backend. Each increment had to leave the overall service usable and preserve the behaviour on which procurement teams relied.
This staged approach made progress observable and reduced the amount of change introduced at any one time. It also gave the team a practical way to compare migrated functionality with its established counterpart before moving further through the application.
From legacy UI to a modern platform
Vue and Nuxt provided the foundation for new web experiences, while .NET and SQL supported the application and data services behind them. The architecture separated frontend modernization from backend responsibilities, allowing the organization to improve the user-facing platform without forcing every legacy concern into the same delivery step.
The target stack was selected for long-term maintainability as much as for immediate implementation. Clearer component boundaries made it easier to reason about changes, assign work and evolve individual parts of the portal.
Delivery and continuity
Planning focused on sequencing, team clarity and application integrity. Existing behaviour was treated as a migration requirement rather than an inconvenience to be discarded. Progress, dependencies and ownership were made visible so that developers understood what could change and what still had to remain compatible. This kept the modernization effort connected to the operating product rather than turning it into a separate technical exercise.
Result
The portal gained a modern Vue, Nuxt and .NET foundation while continuing to serve its users through the transition. The incremental strategy limited disruption and left 3P with an application structure that was easier to extend, scale and support. Just as importantly, the team gained a repeatable way to move mature functionality forward without relying on a high-risk rewrite.
