Tech

Replacing WordPress with Laravel: One App to Rule Them All

stevenlawton.com started as a WordPress site with a theme I did not build. Over time it accumulated subsites: a React shield calculator, a React links page, a standalone HEMA app, a Wild Man folklore SPA, a QR redirect system, and a WordPress newsletter plugin. Six codebases, four tech stacks.

So I replaced the lot with a single Laravel 12 application.

What changed

Before: WordPress + React shield calculator + React links page + Laravel HEMA app + React Wild Man SPA + PHP QR redirects. Each deployed separately.

After: One Laravel 12 app. Blade, Alpine.js, HTMX, Tailwind. Markdown flat files for content. One deploy script. One codebase.

The constraints

Every existing URL had to keep working. Physical QR codes, Instagram bio links, Google index. Nothing could break. Content pages could move but every old URL needed a 301 redirect.

Architecture

The blog was replaced with topic hubs: /making, /riding, /events, /mindset, /tech. Content organised by subject, not date.

What I learned

The hardest part was the URL mapping. Documenting every URL across six subsites and building the redirect map took longer than writing the application. The second hardest part was stopping agents from closing tasks before deploying them.