CreaTech
← Back to work
Playful · E-commerce

Christmas Shop 24

Festive headless storefront

Christmas Shop 24 is a headless Christmas retail storefront built on the Shopify Storefront API. It pairs a playful, seasonal identity (Playfair Display headings, a red/green/gold palette, snow-tinted accents) with a fully featured commerce build: filterable collections, a persistent cart, a native Shopify-powered blog, and a redirect to Shopify-hosted checkout.

The brief was an editorial, giftable middle: not a bargain bin, not a luxury boutique. It borrows the language of style magazines (serif headlines, curated collections, gold accents) and applies it to joyful, affordable products, so every interaction feels like stepping into a beautifully decorated Christmas shop: generous, unhurried, a little bit magical.

Next.js 15Shopify StorefrontGraphQLSCSS Modules
Christmas Shop 24, full screenshot
My role

Stack & architecture

I architected the headless build: Next.js 15 against the Shopify Storefront API (GraphQL), a clean server/client split where all data fetching stays in server components, a client cart persisted to localStorage, and a disciplined GTM/GA4 layer with a strict one-trigger-per-event mapping.

Visual design

I set the editorial Christmas identity: Playfair Display headlines over Lato body, a restrained red / green / gold palette on cream, and a signature “editorial banner” pattern (image, dark gradient, gold small-caps eyebrow, serif title) reused across the homepage bento grid, collection headers and nav previews.

Polish & finish

The seasonal warmth lives in the motion and detail: scroll reveals, Ken Burns header zooms, a shine sweep on product cards, staggered drawer rows and a subliminal snowflake field. Every animation ships with a reduced-motion opt-out, and text stays full-white over imagery for accessibility.

What I built

Headless Shopify commerce

Collections, product pages with variants and galleries, a slide-in cart drawer persisted to localStorage, and checkout handed off to Shopify.

Native blog with ISR

Articles are authored in Shopify Admin and appear within a minute via incremental static regeneration, with no redeploy needed.

Editorial bento homepage

A full-height bento grid pairs a spanning editorial banner with best-sellers, alternating sides per section; product images flex to the row height instead of forcing a square.

Config-driven navigation

Nav collections are populated from an env var: add a collection handle and it appears in the navbar with zero code changes.

Design & craft

Palette

Christmas Red#C41E3A
Evergreen#165B33
Gold#D4AF37
Cream#FAFAF0
Charcoal#1A1A1A

Typography

Playfair Display carries every serif heading (italic reserved for emotional emphasis); Lato handles body, UI labels and prices, clear and warm under the ornament.

Signature details

  • One festive flourish per message: gold eyebrows with a single ✦, never stacked puns.
  • If a layout feels “too Christmas”, pull back the red and gold first; cream and green carry the page.
  • One gold CTA per view; red is reserved for action and urgency.
  • Signature easing cubic-bezier(0.22, 1, 0.36, 1) means entrances glide and nothing ever snaps.
Engineering highlights
  • Server components fetch all data; interactive UI is split into paired *Client.tsx components.
  • SSG + ISR (revalidate: 60) across every route for fast, always-fresh pages.
  • All GraphQL queries and types centralised in a single typed shopify.ts module.
  • Nav preview cards open on hover/focus with careful dismiss handling, so client-side navigation never leaves them stuck open.
  • WCAG-minded: approved text pairings, full-white copy over the editorial gradient, and a 3px gold focus ring on every interactive element.

Like what you see?

I’m available for freelance work. Let’s build something together.