Skip to content

Case study

chrisgarlick.com, rebuilt on Laravel

This site, moved from Astro and a Bun CMS to Laravel and cg-cms, with every URL kept, faster pages and lead capture built in.

Role
Sole designer and developer
Stack
Laravel · Postgres · cg-cms · Tailwind · nginx
Year
2026
Links
Live site ↗

Every one of the 79 live URLs kept, and lab LCP down from about 3 seconds to under 2 before launch.

Starting point

The previous version of this site was a static Astro front end fed by a CMS I had built on Bun. It worked, but every content change meant a rebuild, forms and lead capture lived in separate services, and the CMS had reached the limits of its design.

The move

The new site runs on Laravel with cg-cms, the CMS I built for it. The migration was planned so nothing would break:

  • an importer that moves every entry, user and form submission from the old database in one transaction, and can be run again safely

  • a parity check that requests all 79 live URLs and compares them before cutover

  • redirects for every URL that changed, managed in the CMS

What changed for visitors

Pages are rendered once and served from disk, so they load faster than the static build did. In lab tests before launch, Lighthouse performance went from the high 80s to 99 or 100, and largest contentful paint dropped from about 3 seconds to under 2.

What changed behind the scenes

Lead capture, the free site audit, GDPR export and deletion, email tracking and the nightly SEO audit now all live in one application, covered by more than 500 automated tests, deployed to a 1GB server.

Want something built like this?