Case studyLive Magento 2 demos

Third Shot Supply Co.: one Magento 2.4.9 catalog, two live storefronts

A working Magento 2.4.9 store you can click through today, with two front ends on one catalog: a custom Luma theme and a headless Next.js storefront. A demo, so no real orders.

Visit the live demo m2.michael-kuhlman.com

Diagram: the Third Shot Supply Co. storefront (a Luma child theme) runs on Magento Open Source 2.4.9 in production mode with three custom modules (demo data seeder, shopper UX, performance), on PHP 8.3, MariaDB, OpenSearch and a Redis full-page cache.THIRD SHOT SUPPLY CO.storefront · Luma child themeMagento 2.4.9MAGE-OS · PRODUCTION MODEDEMODATAcatalog seederSHOPPERUXAJAX shopping UXPERFORMANCEspeed modulePHP 8.3MARIADB 10.11OPENSEARCH 2.19REDIS FPCLIVE · OPEN TO ANYONE · NO LOGINDiagram: the Third Shot Supply Co. storefront (a Luma child theme) runs on Magento Open Source 2.4.9 in production mode with three custom modules (demo data seeder, shopper UX, performance), on PHP 8.3, MariaDB, OpenSearch and a Redis full-page cache.THIRD SHOT SUPPLY CO.Luma child themeMagento 2.4.9MAGE-OS · PRODUCTION MODEDEMODATASHOPPERUXPERFORMANCEPHP 8.3MARIADB 10.11OPENSEARCH 2.19REDIS FPC

Context

Most of my Magento work lives behind client logins and NDAs. Third Shot Supply Co. is a fictional pickleball gear brand I put on my own domain so anyone can see the kind of Magento 2 build I lead, end to end, without a login. The same store runs two front ends side by side: the classic Magento theme at m2.michael-kuhlman.com and a headless one at headless.michael-kuhlman.com.

The challenge

Make it a real store, not a theme screenshot: a current Magento release in production mode, a catalog that uses every product type, a checkout that completes, and a front end that is fast and comfortable on a phone. Then build a headless front end on the same catalog, so the two approaches can be compared on the same products.

What I did

I built it with Claude Code as an example of AI-accelerated delivery: I designed the theme, the custom modules and the data model, used Claude Code to write the code faster, and reviewed every change and checked it in a browser before it went live.

  • Platform. Magento Open Source 2.4.9 (the Mage-OS 3.5 distribution) on PHP 8.3, MariaDB 10.11, OpenSearch 2.19 and Redis full-page cache, in production mode.
  • Theme. A custom Luma child theme: header and navigation, category pages with layered navigation, product pages with swatches, cart and checkout, all checked from phone to desktop widths.
  • Catalog as code. A seeder module builds the whole catalog from source files: simple, configurable (color and grip-size swatches), bundle and grouped products, related and cross-sell links, reviews and CMS pages, so the store can be rebuilt from scratch in one command.
  • Shopping UX. A custom module adds AJAX layered navigation, infinite scroll and live search.
  • Performance. A custom module serves responsive WebP images and critical CSS so the first screen paints fast on mobile.
  • Headless storefront. A second front end in Next.js 16 (App Router, TypeScript) that reads the same catalog through Magento's GraphQL API: same products, same URLs, cart, checkout and customer accounts. Pages are prerendered and served from Cloudflare's edge; a small Magento module tells the storefront to refresh a page when a product, category or CMS page is saved.
  • Git discipline. Every change is a Git commit in a private repository, with pre-commit checks for secrets, PHP syntax and Magento XML.

Outcome

Both storefronts are live and open to anyone: browse the catalog, filter, search and place a test order with the "Check / Money order" method (nothing ships, nothing is charged). Open the same product on each to compare a classic Magento theme with a headless build.

Full-time or contractremote, hybrid or on-site

Need a senior Magento lead? Let’s talk.