Live site →
Case Study

CompoundsCoffee

A headless, bilingual coffee-discovery platform — brews, brew methods, and a searchable roaster locator — designed and built end to end on a modern composable stack.

Role
Design & build (solo)
Type
Headless web app
Core stack
Next.js · React · TS
Content
Contentful (headless)
Compounds Coffee homepage with a roasting hero image and 'For the love of coffee' headline
compoundscoffee.com — home. Warm editorial identity, bilingual (EN/FR), authenticated login.
The brief

A content-rich coffee library that stays fast and easy to run

Build a bilingual site where coffee lovers can explore brews, brew methods, and roasters, and where non-technical editors manage everything without touching code — all on an architecture that stays fast, accessible, and maintainable.

The catch is that the content is deep and relational: a single brew carries a full pour-over recipe and tasting notes, links to the roaster that made it, and that roaster links to its physical shops on a map. That richness is exactly where a monolithic CMS gets brittle, so the whole thing is built composable from the ground up.

Under the hood

The build, spec sheet

Architecture
Headless / composable
Content
Contentful, decoupled API
Front end
Next.js · React · TypeScript
Locator data
Contentful + Google Places API
Localization
English / Français
Access
Authenticated login
Content model
Relational (brew → roaster → shop)
Delivery
Fast, accessible, SEO-ready

// styled after the site's own brew-parameter tables

The centerpiece

A store locator that fuses two data sources

Most store locators are an afterthought. Here it was the most interesting problem in the project. Instead of one source, it merges curated roaster and shop data from Contentful with live business data from the Google Places API — so visitors get searchable, real-time results with accurate mapping that neither source delivers alone.

Search by zip or city, filter by distance, and switch between map and grid views. The real work was reconciling two differently-shaped datasets into one clean, fast, user-facing feature.

  • Google Places API
  • Distance search
  • Map / grid views
  • Themed map
Roasters and Shops locator showing a results list and an interactive map centered on St. Louis
Roasters & Shops — Contentful locations reconciled with live Google Places details.
A brew detail page for Lift-Off Bochica with coffee details, full brew parameters, and tasting notes
A single brew: structured recipe data, linked roaster, and tasting notes — all localized.
The content model

Deep, relational, editor-friendly

Every brew is a rich, structured record: region, roast, and process alongside a complete pour-over recipe — method, grinder, grind setting, water temp, dose, bloom, yield, and times — plus free-form tasting notes. Each brew links to the roaster that produced it, and each roaster links to its shops in the locator.

Modeling that in Contentful means editors add a new coffee, roaster, or shop through simple forms, and it flows automatically into the brew pages, the roaster links, and the map — in both English and French, with no developer in the loop.

  • Relational modeling
  • Structured content
  • i18n (EN/FR)
What it demonstrates

The engineering behind the cup

  • Composable architecture

    A cleanly decoupled front end over an API-first content layer — the direction modern content and commerce sites are moving.

  • Multi-source integration

    Two live data sources reconciled and fused into one performant, user-facing feature.

  • Relational content design

    A content model deep enough to be useful and simple enough for non-technical editors to run.

  • Internationalization

    Full English/French localization across structured content, not bolted on after the fact.

  • Accessible, fast front end

    An SEO-ready Next.js build with accessibility considered from the start.

  • End-to-end ownership

    Architecture, design, and implementation through to production — one person, whole stack.

Montanye Creative

Building something headless, or need a fast, data-driven front end?

This is the same composable approach I bring to client work — from architecture to a shipped, maintainable product.

Compounds Coffee · Case StudyMontanye Creative — montanyecreative@outlook.com