Skip to Content
Sample Stores

Sample Stores

Last verified 2026-10-16, directly against the running code and a live fetch of each URL below — apps/reference-storefront/lib/demos.ts’s real DEMO_REGISTRY/STANDALONE_DEMO_URLS, the separate-deployed-sample-stores epic’s ss-02 closeout, npx vercel project ls against the real mathew-dostals-projects scope, and an actual HTTP request to each store (root content, not just a successful build) plus a real unauthenticated-browser admin-route request confirming Clerk’s sign-in redirect on each new domain. This page goes stale the moment any of those things change, so if you’re reading it well after the date above, re-run that same check before trusting a status below — the same discipline /integrations holds itself to.

Mercatus Liber seeds three real, distinct demo storefronts — not placeholders, not the same catalog re-skinned three times. Each has its own theme, its own catalog, and (this is the point) its own real persistence backend. As of epic 81’s closeout, each also has its own independently deployed Vercel project and its own real URL.

Each store, independently deployed

Each store below is the exact same apps/reference-storefront codebase, deployed as its own separate Vercel project (mercatus-liber-print-shop/-northline/-broadleaf), running in a new env-gated single-tenant mode (SINGLE_TENANT_DEMO_SLUG, ss-01) that serves that one store’s content directly at its own root / — not a /demo/<slug> subpath:

StoreStandalone URLBackendThemeWhat it demonstrates
The Print Shopmercatus-liber-print-shop.vercel.app Postgres (shared Supabase, DATABASE_URL)editorialEmbroidery/custom-prints catalog — the default seed.
Northline Home Techmercatus-liber-northline.vercel.app Postgres (shared Supabase, same DATABASE_URL)northlineSmart-home installer catalog — a second, differently themed catalog on the same adapter.
Broadleaf & Co.mercatus-liber-broadleaf.vercel.app Convex (its own deployed project, kindhearted-corgi-798, via a plain CONVEX_URL on this project since it’s the only demo this deployment ever serves)vibrantEclectic artisan/handmade-goods catalog — proves the persistence-adapter layer is genuinely swappable per store, not just in theory.

That per-store backend split is not aspirational — it’s real and already live today, fully disclosed with the exact env vars and test evidence behind it on /integrations’s Persistence table. Two of the three stores share one Postgres database; the third runs on a completely independent Convex deployment, in production, right now.

Live status, re-checked 2026-10-15 (later same day): all three return 200 right now. Print Shop and Northline did go down earlier today with a real 500 — their shared Supabase Postgres project had gone to sleep (free-tier auto-pause from inactivity), not an application bug — and have since been recovered. The underlying graceful-degradation handling (an honest “may be asleep” state instead of a raw error page) and the daily keep-alive/revival job that prevents recurrence are built in free-tier-resilience-and-keepalive (epic 79). Given free-tier backends can still pause again later, re-check live rather than trusting this paragraph if you’re reading it well after this date.

Admin auth on every new domain, live-verified, not assumed: this app’s Clerk instance is a development-mode instance (sk_test_…/pk_test_…, confirmed via Clerk’s own Backend API — environment_type: "development", allowed_origins: null) with no authorizedParties allowlist configured in code either, so it isn’t domain-locked — no Clerk dashboard change was needed for the new domains. Verified for real, not just inferred: an unauthenticated request (real browser headers, a cookie jar carried across the full redirect chain) to each new domain’s /admin/orders correctly completes Clerk’s handshake and lands on Clerk’s real hosted sign-in page (accounts.dev/sign-in) carrying that exact path as its redirect_url — the admin gate is genuinely active on every new deployment, not bypassed.

A real bug found and fixed during this rollout: the first live deploy of ss-01’s single-tenant rewrite to a fresh Vercel project served the plain framework landing page at / instead of the store, and real routes like /cart 404’d — a cache-busted rebuild then failed outright with The Edge Function "_middleware" is referencing unsupported modules: node:crypto. Root cause: this repo’s real installed next@16.3.5 deprecates the middleware.ts file convention in favor of proxy.ts — the old name keeps Next’s pre-16 Edge-runtime-by-default behavior (no node:crypto), while proxy.ts gets Next 16’s new Node.js-runtime default. Fixed by renaming middleware.ts -> proxy.ts (export renamed middleware -> proxy, the same rename Next’s own middleware-to-proxy codemod performs); every one of the three new deployments above was re-verified live after this fix, not before it.

Still reachable: the original shared deployment’s /demo/<slug> paths

The existing shared Vercel project mercatus-liber-demo (commerce.mdostal.com) is additive, not replaced — all three /demo/<slug> paths on it still work exactly as before: /demo/print-shop, /demo/northline, /demo/broadleaf — all three returned a live 200 as of this verification pass (the free-tier Supabase sleep/500 issue free-tier-resilience-and-keepalive, epic 79, was tracking is now mitigated by that epic’s graceful-state + keep-alive job). The landing page’s own demo cards at commerce.mdostal.com link to both: the /demo/<slug> path (default click target, unchanged) and each store’s new standalone URL above (“Open as its own standalone site”).

See also

  • Getting started — how to run these same three demos locally, or provision your own store with create-store.
  • Integrations — the full real/live status of every backend, CMS, auth, payments, fulfillment, and analytics integration behind these stores, including the exact env var(s) that activate each one.
  • Planning corpus — the real design-discussion behind this page (docs-wiki-examples-architecture, epic 80), the free-tier resilience fix (epic 79), and the separate-deployments epic (epic 81).