Headless Shopify E-Commerce OS — Own Your Storefront, Keep Shopify's Engine
A production-ready headless commerce platform that replaces Shopify's theme layer with a modern React application — full design freedom, server-side rendering, session-native cart, and Shopify as the backend source of truth.

Headless Shopify E-Commerce OS
Headless Commerce OS is a production-ready headless storefront that puts a modern React application in front of Shopify's battle-tested backend. Shopify handles what it's good at — products, inventory, orders, payments, tax, and compliance. This platform handles everything the customer sees and experiences — with no Liquid, no theme restrictions, no compromises.
Why I Built It
Shopify themes are a cage. Every store using Dawn, Debut, or any theme-based stack shares the same rendering constraints, animation limits, and data-fetching bottlenecks. Customization hits a wall fast — and that wall is Liquid.
Switching off Shopify entirely means rebuilding inventory management, payments, tax logic, and checkout from scratch. That's months of work and ongoing PCI compliance burden.
✅ Purpose: Full design freedom without abandoning Shopify's ecosystem
🛒 Built for: brands, agencies, and engineering teams that have outgrown theme-based stacks
🛠️ Approach: React Router v7 storefront + NestJS backend + Shopify as the source of truth
How It Works
Browsing
Customer lands on a server-rendered storefront. First paint is fast — React Router v7 renders on the server, so there's no loading spinner, no layout shift. The product gallery loads with full images, pricing, and variant data already baked in.
Filtering, sorting, and collection browsing all work without full-page reloads.
Product Detail
Customer opens a product. Variants, pricing, compare-at prices, and related products are all resolved in a single backend call. No client-side waterfalls. Add to cart is instant — optimistic UI updates immediately while the mutation runs in the background against Shopify's Cart API.
Cart
Cart state lives in a Redis-backed session tied to an HTTP-only cookie. Returning to the tab, closing the browser, navigating away — cart survives all of it. No localStorage race conditions, no cookie-size limits from stuffing cart data client-side. Quantity updates and item removal are non-blocking.
Checkout
Customer hits "Checkout" and lands on Shopify's hosted checkout — fully PCI-compliant, with native support for Shop Pay, Apple Pay, Google Pay, and every payment method Shopify supports. No custom payment integration required.
Account
Customers can register and log in. Authentication runs through Shopify's Storefront API — credentials and access tokens are managed by Shopify, stored in the session on this platform. Login state persists for 30 days.
Tech Stack
| Layer | Technologies |
|---|---|
| Storefront | React Router v7, TypeScript, TailwindCSS |
| Backend | NestJS, REST API |
| Cart Session | Upstash Redis (HTTP-only cookie sessions) |
| Commerce | Shopify Storefront API, Shopify Cart API |
| Auth | Shopify Customer Accounts (Storefront API) |
| Infrastructure | Fly.io, Docker (auto-scaling, zero-downtime) |
What's Live Today
- 📦 Product catalog — browsing, filtering, collection pages, and product detail
- 🛒 Cart — add, update, remove, persist across sessions and page refreshes
- 💳 Checkout — Shopify-hosted handoff with full payment method support
- 👤 Customer accounts — register, login, logout
What's Next
- ⚡ Webhook ingestion — real-time order and inventory events with queue and audit logs
- 🔧 Admin API integration — richer product management surface
- 📊 Analytics pipeline — custom event tracking and funnel visibility
- 🧪 A/B testing layer — variant experiments without third-party scripts
- 🔗 ERP integration hooks — sync orders and inventory with external systems
- 🌐 WebGL storefront layer — immersive 3D product experiences powered by Three.js
Explore the live version of the Headless Commerce OS
👉 ecommerceos-storefront.fly.dev
💡 Built for brands that have outgrown Shopify themes but don't want to abandon the ecosystem — composable commerce with no Liquid, no limits.