Morningbrew
A specialty coffee journal, roaster map, and community brew database. Built end-to-end as a solo designer-developer. Not a client engagement. An ongoing experiment in building a real product from scratch, documented as it grows.
01 Why I Built This
I design enterprise software for a living. Route optimization. Field service management. Systems where implementations take months and the buyer never touches the product.
I wanted to build something that works the other way around. A product where someone lands, uses it, and knows within two minutes whether it is for them. No demo. No sales call. No six-month onboarding.
I also wanted to go beyond designing products and actually build one. Not a Figma prototype. Not a design system exercise. A shipped application with a database, authentication, a data model I designed, infrastructure I chose, and copy I wrote.
The domain is coffee. Not because it is a market opportunity. Because I make pour over every morning, I already tracked my beans in a Notion database, and I was tired of texting grind settings to friends who just bought the same bag.
02 The Problem
Every specialty coffee person I know has the same setup. A Notion table with roasters, origins, and ratings. A notes app with grind settings. A mental list of cafes. Instagram saves for recommendations. None of it connected, none of it shareable, none of it built for the data they actually care about.
Apps like Beanconqueror exist and are deeply capable. But they are utility-first, offline-only, and have no community layer. You cannot see how someone else brewed a coffee you just bought. There is no map. No public profiles. No shared recipe data.
The closest experience to what Morningbrew does is not an app. It is a behavior: the person who maintains their own coffee database and DMs grind settings to friends. Morningbrew turns that behavior into a product.
03 Design Decisions
Logs and recipes are separate entities
The data model splits personal data from shared data. Coffee logs track what you bought: roaster, origin, dates, price, weight. Recipes track how you brewed it: grinder, grind setting, dose, water, pour time, rating, flavor tags, tasting scores.
This separation is the foundation for community features. Your purchase history stays private. Your brew recipe is shared. When someone buys the same bag, they see your grind settings as a starting point.
Most competitors treat the log and the recipe as one object. That works for personal use. It breaks the moment you want to share brew data without exposing what someone paid for their coffee.
The map is the growth mechanism
The most natural sharing moment in specialty coffee: someone asks “where should I order good beans?” or “where should I drink coffee in Hamburg?” The answer is a single link to your map. Roasters you order from. Cafes you visited. Your ratings. No account needed to browse.
The map is not a feature. It is the reason people send the URL to someone else.
Voice: specific, not enthusiastic
The product copy sounds like a person who makes coffee every morning. Not a marketing team. No “your coffee journey.” References to Coffee Collective, Friedhats, La Cabra. Comandante at 24 clicks, not “the perfect grind.” The audience weighs their water to the gram. They do not need to be inspired. They need a tool that respects what they already know.
Design quality as competitive advantage
In a space where the most feature-complete app is also the least visually polished, design is a real differentiator. Morningbrew uses a custom design system with semantic tokens, dark and light mode as a first-class feature, and intentional typography. No third-party UI library. Every component matches the care the audience puts into their daily ritual.
04 Product Strategy
This is not a side project that skipped the strategy work. I run Morningbrew with the same product thinking I apply to client work. AARRR framework, defined KPIs, a monetization model, and a PLG strategy built around how specialty coffee people actually share recommendations.
Product-led growth, designed in
Every growth mechanism is built into the product itself.
The map is the acquisition magnet. When someone asks “where should I order good beans?” the answer is a single link. Public, browsable, no account needed.
Discovery pages are the SEO front door. The beans index, cafes index, and roasters directory are public by design. Someone searching “Ethiopian natural processing” or “best specialty coffee Hamburg” should land on Morningbrew and find useful content before they ever see a sign-up prompt.
Recipes are the community flywheel. When someone logs a brew recipe, they are giving the next person a starting point. The data model was designed so that community brew data accumulates as a side effect of personal logging.
Taste profiles create the moat. The longer someone uses Morningbrew, the more it knows: washed Kenyans, 16 to 22 clicks on the Comandante, Friedhats and Coffee Collective as top roasters. That data is hard to recreate elsewhere.
Growth framework
| Lever | Strategy | State |
|---|---|---|
| Acquisition | Brew guides as SEO content, public map and indexes as shareable entry points | Guides infrastructure ready, public pages live |
| Activation | Onboarding checklist, guided empty states, profile defaults | Shipped. Time-to-first-log target: under 5 minutes |
| Retention | Insights (taste patterns, recipe correlations), community brew data | Data layer ready, UI planned |
| Referral | Shareable map, public profiles, recipe cards | URLs live, sharing prompts planned |
| Revenue | Freemium. Free: 20 logs, basic insights. Paid: unlimited, full insights, export | Spec’d, deferred until 50+ active users |
05 What Is Built
The product is live at morningbrew.cc and actively growing.
Core Product — Coffee journal with structured brew logging. Shared recipe database with ratings, flavor tags, and tasting scores. Beans index and cafes index for public discovery. Roasters directory with ratings and photo galleries. Interactive map with roaster and cafe pins, intelligent marker clustering. Dashboard with profile card and guided onboarding. Public profiles.
Community and Moderation — Community photo system with user uploads, opt-in sharing, and admin moderation. User content submissions with review workflow. Photo reporting for community moderation.
Admin and Operations — Admin panel with user management, content CRUD, waitlist management, and invite distribution. Email infrastructure with delivery logging and one-click unsubscribe. Analytics event catalog with 40+ typed events.
| Roasters | 40+ |
| Coffees cataloged | 100+ |
| Cafes mapped | 12+ |
| Database migrations | 49 |
| Component files | 76 |
| Test files | 88 |
| Design system | Custom, zero UI library dependencies |
Stack — Next.js 16, TypeScript, Tailwind CSS 4, Supabase (Postgres, Auth, Storage, RLS), Mapbox GL JS, Cloudflare Workers via OpenNextJS, Umami Cloud, Vitest, Playwright, GitHub Actions CI/CD.
06 What I Learned
Building both PLG and enterprise products changed how I think about both. I work on field service software where time-to-value takes months and the buyer never touches the product. Morningbrew is the opposite: two minutes to value, no sales call, the user is the buyer. Running both in parallel sharpened my instincts.
Product thinking does not get simpler on a smaller product. Data model decisions, competitive positioning, voice, information architecture, growth framework, monetization model, analytics architecture. Every one required the same depth as client work. The difference is that nobody is reviewing your decisions. You carry the full weight of every trade-off.
The gap between “designed” and “shipped” is where the real work lives. Designing a coffee journal in Figma would take a week. Building it, with real authentication, real data, real performance constraints, real error states, and real infrastructure, took months. The gap is not in the interface. It is in the thousand decisions that never show up in a mockup.
07 What Is Next
- Insights UI. Taste patterns, recipe correlations, community comparisons. The data layer is ready. This is the retention feature.
- Open registration. The waitlist validated interest. Time to remove the gates.
- Guides. 10 coffee guides defined, infrastructure built. The SEO growth lever.
- Multi-user community. Shared brew data across users, aggregated roaster map, taste-based discovery.
Solo designer and developer. Every product, strategy, and design decision is mine. AI (Claude) wrote code under my direction.
Live at morningbrew.cc. Source on GitHub.