Context
At Flapper, I worked on an executive aviation platform whose main product was a PHP monolith more than seven years old, with little useful documentation and no original developers available to explain the system.
How I worked
The challenge was not to replace PHP with TypeScript. The application was in production and sustained the business, so I began with domain discovery. I used the database to map relationships, identify bounded contexts, and plan an incremental migration based on the Strangler pattern.
I migrated modules such as people, authentication, and aircraft to Node.js, NestJS, and Go services. To reduce relational dependencies between contexts, we worked with local projections and Kafka events; gRPC, REST, and GraphQL were used according to each integration’s needs.
What I took from it
The experience consolidated my view of legacy modernization: technology comes after understanding boundaries, risks, and a sequence that preserves the operation. Alongside module delivery, I documented decisions and led workshops so the team could continue the transformation.