I build, repair, and modernise websites and web systems with Laravel, Statamic, WordPress, and modern PHP — the serious builds and the awkward technical problems in between.
Around 20 years of WordPress work, deep Laravel and Statamic experience, and a habit of getting into the messy details other people avoid.
Clear, practical development without the theatre.
Content-heavy sites, resource hubs, multisite builds, and internal tools. Livewire components, custom filtering, user roles, gated content, integrations, and upgrade support.
Bespoke themes, Timber templates, ACF structures, advanced search and filtering, checkout and product customisation, maintenance, and legacy rescue work.
Keeping sites secure, compatible, and working. Composer and plugin updates, dependency conflicts, framework upgrades, performance checks, and broken-build investigation.
Moving sites, resolving DNS and SSL issues, debugging deployment pipelines, planning email migrations, and making sure everything actually works on the other side.
Custom systems built around real workflows: dealer platforms, auction systems, content platforms, resource libraries, integrations, dashboards, and internal tools.
I use AI workflows where they genuinely improve speed and quality — while keeping architecture, judgement, privacy, and final responsibility firmly human.
It's finding why a deployment fails only in production, why a CMS upgrade breaks a fieldtype, why filters lose pagination state, why DNS looks fine but mail doesn't, or why a dependency conflict is blocking the whole project.
That's the kind of work I'm comfortable with.
A dealership group needed dealer-to-dealer purchasing and public auctions in one system, with live stock kept in sync with AutoTrader. The legacy setup couldn't cope with concurrent bidding or reliable imports.
Rebuilt on Laravel with queue-driven bidding, scheduled AutoTrader imports, role-based access for dealers and staff, and a clear separation between public and trade flows.
Reliable real-time bidding, listings that stay in sync automatically, and far fewer manual steps for the sales team.
A content team needed a filterable, multisite resource library with gated downloads and pages that stayed fast under a growing catalogue.
Built a Statamic 5 multisite with taxonomy-based filtering, Livewire pagination that keeps its state, HubSpot-gated content, Glide image presets, and static caching where it counted.
Fast faceted browsing, self-serve publishing for the team, and pages that load quickly regardless of catalogue size.
A large catalogue needed attribute-based filtering, but the existing approach broke pagination and produced duplicate, non-canonical URLs.
Wrote a custom taxonomy query layer with proper canonical handling, corrected template logic, and pagination that survives filter changes.
Accurate filters, clean canonical URLs, and pagination that no longer loses its place mid-browse.
An aging site had failing deploys, dependency conflicts, and a risky host move with email and DNS in the mix.
Staged the migration, untangled Composer conflicts, fixed DNS/SSL and mixed-content issues, and put an ongoing maintenance plan in place.
A clean cutover with no mail downtime, working builds, and a site that's now straightforward to keep updated.
Have a site, system, migration, or technical problem that needs a senior pair of eyes?