# Independent Laravel consultancy for complex applications.

Canonical: https://joelbutcher.dev/

I’m a Laravel consultant for engineering teams whose application has become hard to change. I bring backend and platform architecture experience in multi-tenancy, event-sourced systems, modular design and secure AI-assisted engineering to complex Laravel applications. Start with an architecture review, bring me in hands-on, or keep me on as an adviser.

## What I help with

- **Growing coupling**: When a small change touches too much of the application, I help draw clearer domain boundaries and untangle it step by step.
- **Tenancy in an established product**: Adding tenancy to a live product built for a single tenant, while protecting existing behaviour.
- **Architecture rules nobody enforces**: Turning agreed architectural decisions into practices the team can check in code.
- **Safe AI-assisted development**: Helping teams use AI coding tools safely, with shared guidance, careful access boundaries and human review.
- **Security during design**: Considering security while the design is still being shaped, not only in a review at the end.

## How I help

I work in three ways, from a one-off review to ongoing advice.

- [Architecture review](https://joelbutcher.dev/services#architecture-review): A short, written assessment of your foundations that ends in a prioritised plan your team can run without me.
- [Foundations engagement](https://joelbutcher.dev/services#foundations-engagement): Hands-on work with your team to put the foundations in place: boundaries, quality gates, secure practice and decision records.
- [Advisory](https://joelbutcher.dev/services#advisory): Ongoing design and security reviews and RFC support, for engineering leaders who want a second opinion they can rely on.

[Compare the three offers](https://joelbutcher.dev/services)

## Selected work

A few anonymised examples of my work.

- [From single tenancy to a multi-tenant platform](https://joelbutcher.dev/work#multi-tenant-platform): I helped evolve a live, event-sourced system from a single-tenant design to support a major partnership.
- [Making architecture easier to maintain](https://joelbutcher.dev/work#maintainable-architecture): I’ve written proposals for clearer domain boundaries and helped turn architectural decisions into practices teams can check in code.
- [My approach to secure AI-assisted engineering](https://joelbutcher.dev/work#secure-ai-assisted-engineering): Spec-driven development, architectural guardrails, quality checks and human review: how I approach AI-assisted engineering.

[Read the case studies](https://joelbutcher.dev/work)

## How I work

- **Understand the business constraint.** I start with what the business needs the system to do next.
- **Change the system in small, reversible steps.** Each step can ship on its own and be undone, with no big-bang rewrite.
- **Write decisions down and prove them in code.** A written proposal sets out the options, and checks in code keep the decision in place.

## Latest writing

Notes on Laravel architecture, platform engineering, security and AI-assisted development.

- [Strangle, don't rewrite: moving a live system onto a new tenancy model](https://joelbutcher.dev/writing/strangle-dont-rewrite-moving-a-live-system-onto-a-new-tenancy-model.md): How to move a live, white-label system onto one tenancy model without a rewrite: one seam, one consumer at a time, fail closed, then delete the old path.
- [Baselines that only shrink: freezing technical debt without pretending it's gone](https://joelbutcher.dev/writing/baselines-that-only-shrink-freezing-technical-debt-without-pretending-its-gone.md): How I use baselines to switch on strict static analysis today, hold new code to the full rule, and make sure the recorded debt can only shrink.
- [The Dark Side of Caching: Don't Hurt Your Laravel App](https://joelbutcher.dev/writing/the-dark-side-of-caching-dont-hurt-your-laravel-app.md): Caching can be a highly beneficial tool in your belt to help improve your customers user experience by reducing the need for expensive, repetitive computations, or API calls by storing frequently accessed data in memory.

[Read all my writing](https://joelbutcher.dev/writing)

## Working on a complex Laravel application?

A few lines about your Laravel application and what is slowing your team down are enough to start. I reply within 2 working days.

Contact: https://joelbutcher.dev/contact
