Lumia Crystal - E-commerce Platform
A headless e-commerce storefront for crystal jewelry — custom Next.js 15 frontend powered by Shopify Storefront API, with a 4-layer caching architecture delivering sub-second page loads across 60+ products.

Shopify handles commerce. The frontend is entirely my own.
A decoupled, headless build: Shopify owns products, inventory, and checkout, while a bespoke Next.js 15 App Router frontend owns every pixel of the experience — real-time catalogue, cart, filtered search, and a layered caching strategy that keeps pages fast without going stale.
- Stack
- Next.js
- TypeScript
- Tailwind CSS
- Shopify API
- React
- Category
- Full-stack
My Role
Frontend · integrationAt a Glance
By the numbers- Products
- 60+
- Cache Layers
- 4
- ISR Revalidation
- 30min
- Collections
- 4
- Zodiac Guides
- 12
- Developer
- 1
Tech Stack
Layer by layer- Framework
- Next.js
- React
App Router · Turbopack
- Language
- TypeScript
Strict mode
- Styling
- Tailwind CSS
OKLCH colour system · CSS-based config
- E-commerce
- Shopify
- GraphQL
Storefront API — products, cart, checkout
- Deployment
- Vercel
ISR · CDN · image optimization · analytics
Headless Architecture
Decoupled by designNext.js owns rendering and the whole experience; Shopify is a backend for inventory, orders and checkout. Everything between them is GraphQL.
Custom Frontend
Shopify Backend
Infrastructure
4-Layer Caching Strategy
Fast, not staleA request crosses up to four caches before it reaches Shopify — sub-second on a cached route, never more than 30 minutes stale.
Trade-offs
Decisions that heldHeadless over Shopify themes
ISR with 30-minute revalidation
Shopify-hosted checkout instead of custom
Tailwind CSS v4 with OKLCH colors
Want the full walkthrough?
Happy to talk through the architecture, the decisions, and the trade-offs behind this build.


