Legacy PHP support
without a full rewrite
Inherited an aging PHP codebase that nobody wants to touch? You probably don't need a rewrite — you need someone who's done the upgrade dance enough times to know which battles to pick. I've migrated apps from PHP 4 to 8, from CakePHP and CodeIgniter to Laravel, and through every Laravel major version since 4.0.
Teams with codebases that still earn their keep
Old code isn't bad code — it's earning revenue. The job is to make it safer to work with, not throw it away.
Inherited codebases
Original developer is long gone. Nobody is sure what's safe to touch. Let's start with a proper audit.
Apps stuck on old versions
PHP 7.x, Laravel 5/6/7, jQuery-based frontends. Still working — but security patches stopped, hosting is getting expensive, hiring is hard.
Mid-migration projects
Started a rewrite, ran out of steam, now you're running two systems. Need someone to either finish it or back it out.
Compliance pressure
Auditors flagged the old PHP version. ISO 27001 is coming. You need a credible plan, not just panic.
Move you forward without breaking things
Gradual, low-drama modernisation. Your customers shouldn't notice anything except that things stop breaking.
Codebase audit
Honest assessment of what you've got — risks, technical debt hot spots, low-hanging modernisation wins.
PHP version upgrades
PHP 5.x → 7.x → 8.x. Done properly, with deprecation fixes and tests added along the way.
Laravel upgrades
Through every major version. Includes refactoring deprecated patterns to current idioms.
Security patches
Dependency updates, vulnerability fixes, removing abandoned packages, plugging the obvious holes.
Adding tests
Even a thin layer of integration tests makes everything else safer. Start where it matters most.
Killing dead code
Old features nobody uses, copies of copies of copies, unused models. Quietly removed with confidence.
Framework migration
CodeIgniter, CakePHP, Symfony, custom MVC → Laravel. Gradual, strangler-fig style.
Frontend modernisation
jQuery → Alpine.js, Bootstrap → Tailwind, legacy templates → Livewire components. Page by page.
Documentation
Architecture notes, decision records, runbooks — so the next person doesn't have to start from zero.
Audit first,
heroics never
Big-bang rewrites fail. Boring incremental work succeeds. Here's the rhythm.
Audit the codebase
A few days deep in your code. You get a written report with risks, options, rough effort and a recommended sequence.
Stabilise & secure
Patch the urgent stuff first — security holes, broken builds, missing backups, unreliable deploys. Stop the bleeding.
Modernise gradually
One module at a time, deployed continuously, always live. No code freezes, no big-bang cutovers, no panic.
Kind words from people I've worked with
Jamie has been instrumental in building My Trust List from the ground up. As our senior full-stack developer, he combines genuine technical depth across Laravel and modern web architecture with the kind of pragmatic problem-solving you only get from someone who truly owns what they build. He communicates clearly, ships reliably, and consistently makes the right call on the trade-offs that matter. I'd recommend him without hesitation to any team serious about quality.
CEO & co-founder
We have worked with Jamie since 2024 after approaching him to support and maintain our vehicle recycling platform built by a previous developer. Since then we have fixed numerous bugs, upgraded to the latest library releases and built new functionality including a brand new mobile phone app for our drivers. Knowing we pay the same amount each month and can bank any unused time helps with our cash-flow and we know he'll be on-hand whenever we need support.
Operations Manager
Jamie is a safe pair of hands when you need someone. I have worked on a number of projects with Jamie. (Custom APIs mainly, but server and security related items as well). He responds quickly, follows up without needing to chase and completes tasks in a methodical way. He finds the last bugs with thorough testing; so we are confident at launch that everyone will be pleased.
Owner
The things people usually ask
Tell me about your codebase
Roughly how old is it, what's on it, and what's prompting the move? A few lines is enough to start.
No hard sell. No obligation. Just a friendly chat about whether we're a good fit.