Backend & infrastructure

Multi-tenant Laravel platform

A Laravel application serving multiple client organisations from one codebase, with per-tenant data isolation and queued background processing.

LaravelMySQLRedisHorizonGitHub Actionsnginx

The problem

Describe the situation the client was in before the work started, what was slow, broken, manual or impossible.

Approach

  • Tenant scoping enforced at the query layer rather than in individual controllers, so a missed where-clause cannot leak data across organisations.
  • Long-running exports and report generation moved onto Redis-backed queues with Horizon supervision.
  • Schema migrations written to be backward compatible, so a code rollback never required a schema rollback.
  • GitHub Actions pipeline running the test suite on every push, with atomic symlink releases and one-command rollback.

More work

Server engineering

cPanel hosting fleet migration

Moving a set of cPanel accounts onto new infrastructure, websites, databases, mailboxes and DNS, with the cutover planned so downtime stayed in minutes.

WHMcPanelIMAPSyncrsync +2
AI engineering

Retrieval-grounded support assistant

A support assistant answering from the organisation's own documentation, with citations on every answer and a clean handover when confidence was low.

Claude APIPythonFastAPIpgvector +2
Performance engineering

E-commerce performance rescue

A WooCommerce store where the caching plugin had been maxed out and the site was still slow, diagnosed to the actual bottleneck rather than the assumed one.

WooCommerceMySQLRedis object cacheCloudflare +1

Something like this on your plate?

Describe the situation and I will tell you how I would approach it.

Start a conversation