Cates Works
All work
Developer tooling/2026

Storefront Demo — Medusa Adapter

Internal capability demo

The same headless-commerce UI shell as the Shopify-adapter demo, rebuilt on a Medusa-shaped adapter instead — direct proof that only the data adapter changes when the commerce backend does, not the storefront.

Storefront Demo — Medusa Adapter — The same headless-commerce UI shell as the Shopify-adapter demo, rebuilt on a Medusa-shaped adapter instead — direct proof that only the data adapter changes when the commerce backend does, not the storefront.

The challenge

“Same architecture, only the adapter changes” is easy to write in capability copy and hard to actually prove — this demo exists to make that claim checkable by rebuilding the same storefront on a second, unrelated commerce backend.

A visitor can’t tell which backend is running underneath by looking at the storefront — only the product data and the adapter code differ from the Shopify demo.
The north star

The approach

  1. 01

    Reused the identical Next.js 16 UI shell from the Shopify-adapter demo — the same catalog grid, PDP layout, and cart drawer components, unchanged.

  2. 02

    Wrote a Medusa-shaped mock adapter in lib/commerce, matching Medusa’s data model instead of Shopify’s, so the swap is isolated to the data layer.

  3. 03

    Carried over the same cache-tag revalidation pattern and optimistic-cart behavior, so both demos prove one architecture, not two that merely look similar.

  4. 04

    Kept the two demos as separate, standalone repos rather than a shared package, so each reads as its own believable storefront rather than a shared internal harness.

Design iteration

The portability claim, proven rather than asserted

The Shopify and Medusa demos started from the same UI shell and diverged only inside lib/commerce — that comparison is the entire portability story. Both are local-only for now; deploying both publicly is the next step.

What we built

Highlights of the work

Same shell, different backend

Identical catalog, PDP, and cart components to the Shopify demo — only the adapter changed.

Live price/stock strip

The same “live · checked [time]” pattern, sourced from the Medusa-shaped adapter.

Optimistic cart

Instant add-to-cart UI, matching the Shopify demo’s behavior exactly.

Cache-tag revalidation demo

The same edit-and-see-it-live-in-seconds control, proven against a second backend shape.

Capabilities demonstrated

Add these to your own project

Let’s talk

Have a project, or a product that could work harder?

Most projects begin with a short, no-pressure discovery call.