Context
The system had accumulated AngularJS flows and still needed continuous improvements. The migration had to reduce the risk of an abrupt replacement and give the team a clear path for evolving each part of the product.
The problem
Modernize an application already in use without forcing a full rewrite, keeping the product moving while new flows advanced on a current foundation.
My role
I contributed to moving flows to React, Next.js, and TypeScript, defining reusable components, and organizing the boundaries between legacy and new code.
Technical decisions
- Migrate by business flow so each stage could be validated before retiring the previous implementation.
- Create components from recurring product patterns instead of designing an abstract library before enough use cases existed.
- Use types to make data contracts and interface states explicit throughout the transition.
What I implemented
- Mapping of legacy flows and dependencies.
- Reusable components for the new journeys.
- Incremental migration of screens to Next.js.
- Typed data and interface states with TypeScript.
Outcome
The incremental strategy allowed modernization to progress alongside product work. New flows began sharing components and clearer contracts, reducing their coupling to the legacy foundation.
What I learned
Modernization is safer when it follows verifiable business flows. Moving one journey at a time creates clear validation points and avoids depending on a complete replacement.