Work & projects

What I've built

My career so far, plus a few personal projects I build in my spare time.

Career

Where I've worked

Jump24 logo

Jump24

May 2023 - Present

Full Stack Developer

A Laravel Premier Partner agency building new applications, modernising existing platforms, and augmenting client teams. I deliver production Laravel across a range of projects, working flexibly across Blade, Inertia + Vue, React SPAs and Filament, with a strong focus on maintainable, well-tested code.

Click Dealer logo

Click Dealer

Jan 2018 - May 2023

Senior Software Engineer

A B2B SaaS company serving the UK automotive industry. Over five years I progressed from maintaining legacy PHP to leading development on new Laravel services and AWS-based microservices, building JSON APIs and tooling across a large platform.

Coeliac Sanctuary logo

Coeliac Sanctuary

Aug 2014 - Present

Lead Developer

A UK website and mobile app serving the coeliac community, run by my wife. I own the entire technical platform - backend, infrastructure, hosting and ongoing feature development - most recently rebuilding it from the ground up on a modern VILT stack.

Side projects

Personal projects

Coeliac Sanctuary is a UK website and mobile app serving the coeliac community. While my wife looks after content, marketing and social media, I'm responsible for the entire technical platform - backend development, infrastructure, hosting and ongoing feature development.

Originally launched in 2014 as a vanilla PHP website, the platform has been through several major rewrites over the years. The current version is a full rebuild on a modern VILT stack - Laravel, Inertia, Vue and Tailwind - with server-side rendering and a heavily customised Tailwind configuration. It launched in August 2025.

The site includes blogs, recipes, an eating out guide where visitors can review gluten-free eateries across the UK, and an online shop powered by Stripe. It receives anywhere from 1,000 to 1,500 visitors a day - mostly using the eating out guide and map - so performance, query optimisation and efficient rendering are central to the architecture.

Rebuilding it from scratch became a labour of love spread across roughly two and a half years of spare time - time that grew a lot scarcer once I became a first-time father in 2024 - and it pushed me to explore Laravel far more deeply than most projects ever call for. The result leans on features many apps barely scratch the surface of: Laravel pipelines power the entire eating out section, a dynamic, self-clearing cache keeps everything fast, and a custom Inertia response handler gives every page a consistent layout.

Alongside the website I've built a React Native mobile app - released in October 2025 and powered by versioned APIs - that lets users find places to eat on a map around their location. It's available on both the App Store and Google Play.

Behind the scenes it runs on DigitalOcean managed with Laravel Forge, with a custom-built admin panel, background processing via Laravel Horizon, object storage on Amazon S3, and transactional email and newsletters handled through Amazon SES and a Spatie Mailcoach instance hosted on Laravel Cloud.

PestPHP's architecture testing is genuinely brilliant - but I prefer to stay in PHPUnit, so I built my own. It's a package of fluent, expressive code and architecture assertions for a PHPUnit test suite: you extend a base test case and chain readable rules over a directory of code. Under the hood it parses each file into an abstract syntax tree with nikic/php-parser, so the assertions inspect real code structure rather than matching text.

It covers both code-level checks - banning stray dd() / dump() calls or enforcing strict types - and class-level rules, asserting that classes are final, abstract or readonly, implement the right interfaces and traits, are invokable, or follow naming conventions such as a required Controller suffix.

I've never really promoted it, but it's become a quiet staple across several of my own projects. On Coeliac Sanctuary alone it enforces consistent conventions right across the codebase - actions, controllers, jobs, resources, pipeline steps, mailables and far more - and after the best part of a year in production it's caught more than a few issues before they reached deployment.

This very site is a small VILT app - Laravel, Inertia, Vue and Tailwind - with server-side rendering, hosted on Laravel Cloud. It's deliberately lightweight, but it's a fun playground for the stack I love, with a markdown-driven blog, syntax-highlighted code samples, and a recent ground-up redesign.

The full source is on GitHub if you'd like a look under the hood.