Legacy PHP modernization · Independent consultancy

Give me the PHP application everyone else is afraid to touch.

I modernize PHP systems that still run the business: version upgrades, framework migrations, refactoring and stabilization of inherited code. Incrementally, in production, without defaulting to a full rewrite.

Experience
Developing software since 2007
Scope
PHP 5.x → 8.x, Symfony, Laravel, custom frameworks
Engagement
Remote, B2B contract, EU time zone

Problems I solve

Does this sound like your application?

Most legacy PHP systems share the same symptoms. They are not a sign of a bad team. They are what happens to software that has been valuable long enough to outlive its original decisions.

  • It runs on PHP 5.6 or 7.x, and hosting, security patches or a compliance deadline are forcing the issue.
  • The people who wrote it have left. The current team maintains it carefully and changes it as little as possible.
  • Every release breaks something unrelated, so releases are rare and large, which makes the next one riskier.
  • There are no tests, little documentation, and one person who knows how deployment actually works.
  • The framework is home-grown, forked, or no longer maintained, and modern libraries no longer fit.
  • A full rewrite has been proposed, estimated, and quietly shelved. Probably more than once.

Services

Modernization work, scoped to the problem at hand

Engagements usually start with an assessment and continue with whichever of these the system actually needs. No step requires stopping feature work or freezing the codebase.

Codebase assessment

A fixed-scope review of the application: runtime and dependency risks, architecture, test coverage, deployment, and the realistic upgrade path. You receive a written report with prioritized steps and effort estimates, whether or not we work together afterwards.

PHP version upgrades

Moving applications from PHP 5.x or 7.x to a supported 8.x release. Static analysis to find breaking changes before production does, replacement of removed extensions and abandoned packages, and a release plan that keeps the system running throughout.

Framework modernization and migration

Migrating from custom, Zend, Kohana, Yii, CodeIgniter or early Symfony and Laravel versions to a current Symfony or Laravel. Old and new code run side by side; routes move over one at a time, and each step can ship on its own.

Refactoring and technical debt reduction

Characterization tests around the behavior that matters, then clear boundaries, dependency injection, removal of dead code and duplicated logic. The goal is measurable: changes that used to take weeks take days, and fewer regressions reach production.

Stabilizing inherited codebases

For systems that are failing in production: error monitoring, a reproducible local environment, a repeatable deployment, and root-cause fixes for the bugs that keep coming back. First make it stop hurting, then make it better.

Ongoing maintenance

Retained capacity for a business-critical system after the modernization work: security updates, dependency upgrades, performance fixes, and small features, delivered by the same person who already knows the codebase.

Why not a rewrite

The old system knows things nobody wrote down

Fifteen years of invoicing rules, customer exceptions and integration quirks live in that code and nowhere else. A rewrite has to rediscover all of it, usually by breaking it in production.

Rewrites also take longer than estimated, and the old system needs changes the whole time. Teams end up maintaining two applications, and the new one does not earn anything until it replaces the old one completely.

Incremental modernization reverses that. Each step is small enough to review, ships on its own, and can be rolled back. The system gets safer every few weeks instead of in one big, late cutover. Business continues throughout.

Sometimes replacing a component is the right call. When it is, I will say so, and scope it to that component rather than the whole application.

Tools

AI-assisted. Experience-driven.

I use modern AI-assisted development tools when they help me understand systems faster, explore unfamiliar code, generate tests, document behaviour and accelerate repetitive work.

But legacy modernization is not a prompt-and-rewrite exercise.

A 15-year-old PHP application often contains undocumented business rules, historical compromises and edge cases that exist for reasons no AI model can reliably infer.

AI can accelerate the work. Engineering judgment decides what work should actually be done.

Where AI helps

  • Understanding unfamiliar code
  • Finding patterns and dependencies
  • Generating test scaffolding
  • Documentation
  • Refactoring assistance
  • Repetitive implementation work

Where experience matters

  • Understanding business risk
  • Architecture decisions
  • Identifying hidden business rules
  • Migration strategy
  • Production debugging
  • Knowing what not to rewrite

The goal isn't to use AI everywhere. It's to use the right tool for the problem.

About

Dimitar Kalinov

Senior PHP developer and tech lead. Plovdiv, Bulgaria. Working remotely with teams across Europe and beyond.

I have been building and maintaining web applications since 2007, mostly in PHP, and for most of that time on systems that were already in production when I arrived: an IP address management platform used to automate corporate networks, a ticketing platform with live seat selection and refunds, a payment platform processing more than $10M a month, and real-time location systems for manufacturing.

That work taught me to respect running code. I read before I change, measure before I optimize, and prefer a boring, reversible step over an impressive one. As a tech lead I have also owned architecture, deployment and mentoring, so I am comfortable working with your team rather than around it.

I combine close to two decades of software engineering experience with modern development tools, including AI-assisted coding and analysis, where they genuinely improve the work.

Dimitar Kalinov
Backend
PHP 5 → 8.4, Symfony 2 → 8, Laravel, Slim, API Platform, custom frameworks
Data and infrastructure
PostgreSQL, MySQL, Redis, Docker, Linux, CI/CD
Also
Vue, React, Python/Django, large-scale data processing
Open source
Carstio, a workshop management platform on Symfony 8, and a booking calendar for Symfony
Education
BSc Informatics, MSc Software Technologies with AI (in progress), Plovdiv University
Details
Full CV (PDF) · LinkedIn

Contact

Tell me about the system

A few lines are enough: the PHP version, the framework, roughly how large the codebase is, and what is hurting right now. I read every message myself and reply with questions, not a pitch.