Case Study
Awake
Specialty Coffee Brand - Headless E-commerce
Full-stack headless e-commerce platform for a fictional Italian specialty coffee brand. Built to demonstrate a production-grade architecture combining a headless CMS, authentication, e-commerce, and subscription payments.
Personal Project · In ProgressOverview
Awake is a portfolio project designed around a fictional specialty coffee brand. The goal is to demonstrate end-to-end ownership of a modern full-stack product: headless CMS integration with Sanity, server-side rendering with Next.js 15 App Router, authenticated private areas, and a complete e-commerce and subscription payment flow via Stripe. The project is structured as a Turborepo monorepo with a clear separation between the web application and the Sanity Studio.
Architecture
Sanity Studio (CMS)
↓ GROQ
Next.js 15 App Router
├── Server Components → fetch from Sanity (blog, products)
├── Client Components → interactions (cart, auth UI)
├── Route Handlers → Stripe webhooks, internal API
└── Middleware → private area route protection
↓
PostgreSQL (users, orders, sessions)
Stripe (payments, subscriptions)Releases
Release 1
Base Headless
- —Homepage and product pages driven by Sanity CMS
- —Blog with GROQ queries and server-side rendering
- —Design system in Tailwind CSS
- —Monorepo setup with Turborepo
- —Deploy on Vercel + Cloudflare CDN
Release 2
Private Area
- —Authentication with NextAuth v5
- —Registration, login, and user dashboard
- —Exclusive content for members
- —Route protection via Middleware
Release 3
E-commerce
- —Product detail pages
- —Cart and checkout flow
- —Order management
- —PostgreSQL + Prisma for users and orders
Release 4
Transactions
- —One-shot payments via Stripe
- —Monthly subscription flow
- —Stripe webhooks and event handling
- —Order history in user dashboard
Stack