A concept brief for a speciality coffee roaster running subscriptions and an editorial journal. Built end-to-end to show the work — live client work shown on request.
Year
2026
Role
Concept · Design + Build
E-commerce
Editorial
Next.js
The brief
Bramble is a concept brief for a Sheffield speciality roaster — single-origin beans roasted under a railway arch, sold as one-off bags or via a recurring monthly box. The brief: handle subscription, single purchase, and an editorial journal of tasting notes and farm visits in one site, without any of the three feeling bolted on.
Build a site that handles all three — subscription, single bags, journal — without any of them feeling bolted on.
From the brief
Design decisions
The four specific calls that defined this build.
01
'Pause for a month' instead of cancel
The retention friction in subscription coffee is always at the cancel screen. Added a one-click 'pause for a month' option that holds the customer without trapping them. Net retention typically lifts 4–6pp vs. the same offer with a hard-cancel UX.
02
MDX in the repo, not a headless CMS
Bramble write all their own tasting notes. A traditional headless CMS for that is overkill — most teams at this size try Sanity, abandon it after two months. MDX in the repo means the team writes in plain Markdown and it ships with the build.
03
One cart for subscription + single bags
Most coffee subscription sites push you into the subscription product type, which makes one-off bag purchases feel second-class. Built a unified cart that handles both seamlessly — single-bag buyers convert to subscription naturally over 2–3 orders.
04
Generative cover swatch per coffee
Each origin gets a cover image generated from its tasting notes — terracotta for stone fruit, deep brown for chocolate, ochre for citrus. Means new coffees ship without commissioning new photography. Cuts week one of every new release.
The stack
Every tool chosen on purpose, with a reason that beat the obvious alternative.
Framework
Next.js App Router
Static-export-friendly for the journal, dynamic for the cart. Same codebase, no Rube Goldberg deployment.
E-commerce
Shopify Storefront API
Shopify for inventory and checkout (a solved problem); custom front-end for everything else.
Subscriptions
Recharge via Shopify
Native Shopify subscriptions handle weekly but get awkward for 'pause one month, ship the next.' Recharge handles it cleanly.
CMS
MDX in repo for journal
Tasting notes are short-form, infrequent, and team-written. No CMS justifies its weight.
Search
Pagefind
Static, instant, zero JS. Generates the index at build. Saves a $30/mo Algolia bill.
Hosting / Analytics
Vercel + Plausible
Plausible is cookie-free so the cookie banner that nobody clicks goes away.
What success looks like
The numbers a real engagement would be scored on.
−45%
Target · subscription churn
33%
Goal · journal share of traffic
<90kb
Homepage page weight
Like this for your business?
I'd start with the same brief on yours — built to the same standard, in 2–4 weeks.