ARES V2 is the re-platforming of the automotive damage management system Turkey’s insurance repair operations run on: claim files, work orders, expertise (parts/labor/paint), document management, task chains, payments and dealer/expert/insurer administration. The legacy system — a decade-old CodeIgniter 3 monolith with 15,600 commits — stayed fully live during the entire migration, with zero downtime.
Technologies: Laravel 12, PHP 8.2, PostgreSQL 18 (CloudNativePG), Octane/FrankenPHP, Livewire, React 19, RabbitMQ, Redis, Kubernetes/ArgoCD
I joined as an API developer in February 2026 and became the technical owner of the legacy→v2 migration program in June: architecture decisions, schema design, releases and deploys, production incident response, code review and documentation.
What I built
- The dual-write arc: legacy writes were first mirrored into the v2 schema through model observers — then table families were flipped to v2-primary, the mirror direction was reversed (v2 became authoritative, syncing back to v1), and in August 2026 the last v1→v2 mirror leg was removed. v2 is now the single system of record.
- Identity resolution & the wire contract: files.id and the legacy reference turned out to be entirely different id spaces (54 of 55 sampled files differed). The fix was an 8-phase wire-contract program moving every external API id space to v2 — with dual-read mappers rolled out simultaneously across three clients (React SPA, Flutter tablet, mobile).
- Strangler-pattern table retirement: the legacy labor table family was retired in 5 phases — including an atomic labor-id space migration and a post-DROP review that hunted down 9 live error surfaces.
- Integrations: transactional outbox with idempotency for the parts-supply platform (GOS), HMAC-signed service-to-service auth, Delta ERP status proxy, configurable workflow and document rule engines.
- Internal tooling: a Scenario Runner that generates end-to-end test files, and a Schema Dictionary (v1↔v2 mapping explorer) whose introspection I took from 94s to 1.9s by moving from information_schema to pg_catalog.
- Product-tour infrastructure: screen/tour/step/chain model with anchor-based targeting, role & team audiences and media steps — powering a no-code tour builder for the product team.
- Production operations: blue/green prod cutover, same-day incident-to-release cycles, 18 production release tags.
Measured outcomes
- 50-module modular monolith serving web admin, React SPA, tablet and third-party integrations
- 1,286 commits · 533 MRs merged · 347 migration files · 236 test files (Pest 4) · 97 docs
- Schema introspection: 94s → 1.9s; legacy labor tables fully retired; last mirror leg removed