Skip to content
bizurk
← ALL CASE STUDIES

Hearthlight/Q1 2026/ongoing/346K LOC/solo build

The Empress tarot card, gold-leaf illustration on forest green from a licensed independent-artist deck

// III · The Empress · licensed gold-leaf deck on forest green

A meal planner with a witchy twist.

Solo build, 346K lines, three AI agents.

346K

Lines of code

90

Prisma models

294

API routes

22

Major Arcana, drawn

// the witchy layer is not a marketing skin

Every dish in the library has an element, a planet, a moon phase, and a list of intentions. Twenty-two hand-painted Majors. Eight spread modes. The data model treats correspondence as a real domain.

The Moon tarot card, gold-leaf illustration on forest green from a licensed independent-artist deck

// XVIII · The Moon

Build a meal planner that doesn’t feel like Silicon Valley.

Most meal planning apps treat cooking like an inventory management problem. They feel like spreadsheets with rounded corners that sell a productivity feeling instead of a kitchen.

Hearthlight started as recipe management and grew a digital grimoire. It became a household operating system that takes seasonality, intention, and the moon seriously alongside the practical work of feeding people. 90 Prisma models, 294 API routes, three subscription tiers, three specialized AI agents, all built solo.

“Save Hours. Reduce Waste. Cook with Magic.”

// hearthlight tagline

From the wordmark to the warehouse, plus the grimoire.

  • Brand identity

    Witchy household OS, not productivity SaaS. Forum + Cormorant + Spectral type stack. Forest green, copper, antique gold.

  • Marketing site

    Landing, pricing, blog, FAQ. Sparkles badge, tarot cascade hero, voice that does not sound like Silicon Valley.

  • Recipe library

    Hundreds of recipes with prep, cook, servings, difficulty, and magical correspondences per dish.

  • Daily tarot integration

    Eight-spread tarot system. Daily card draws inform meal recommendations and energy journaling.

  • Moon phase + sabbat planning

    Eight phases tracked via astronomy-engine + suncalc. Sabbat cycles. Planetary hours.

  • AI meal planning

    Vercel AI SDK. GPT-4 for plan generation, GPT-4 Mini for chat, Vision API for receipt OCR.

  • Pantry + inventory

    Per-household inventory with expiry tracking. "What can I make?" matches against recipes by inventory pct.

  • Kroger price integration

    Real-time pricing via Kroger API. Cross-store price comparison. Cheapest-option highlighting. Deep-link checkout.

  • Receipt OCR

    OpenAI Vision extracts line items from scanned receipts. Auto-classify by category. Inventory + price history updates.

  • Shopping list

    Auto-populated from meal plan. CSV export, email export, printer-optimized print. Per-store totals.

  • Stripe + 3 tiers

    Free Hearth Keeper, $7/mo Kitchen Mystic, $15/mo Coven Leader. Webhooks, trials, feature gating.

  • Multi-household + roles

    Owners, guardians, members, children, guests. Per-member dietary profiles. Permissions module.

The day starts with a card.

Hearthlight does not separate the witchy from the practical. The day’s tarot draw flows directly into the meal plan: the card reveals, the interpretation appears, and a recipe pairing follows. The interpretation isn’t pre-recorded in production; that version calls GPT-4 with the user’s history and current moon phase.

Daily readingWaxing Crescent
Upright

// 8 cards from the Major Arcana · localStorage persists today's draw

Five steps to a week of meals.

Days, dietary restrictions, proteins, moon phase, budget. Five small choices. The production wizard streams a full week of recipes against a Kroger pricing layer in under thirty seconds. The embedded version below cycles through the same five screens and surfaces a sample meal plan locally, no backend.

Step 1 of 5

How many days?

// localStorage saves your selections · click reset to clear

Ask the kitchen anything.

The chat assistant runs on Vercel AI SDK plus GPT-4 in production. It function-calls into the recipe library, meal plan, and pantry, so its replies aren’t just text; they include actionable cards. Five preset prompts below; the answers are pre-written and stream in to give you the feel of the real thing.

Hearthlight Assistant

Ask the kitchen anything.

Recipes shaped around what you have, how you feel, and what the moon is doing tonight. Grounded in real cooking, not woo.

Try a question
Demo · tap a question above. Free-text input is disabled in this preview.

// click a preset to send · streaming animation only · no API calls

What can I make tonight?

The pantry view is also a recipe matcher. Hearthlight checks what you have, what is about to expire, and what your dietary profile allows, then ranks recipes by inventory match. The expiring-soon badge nudges you toward what to use first. Production runs this against your real Kroger price history.

Inventory

Your pantry · 7 items

ItemQtyExpiresCategory
Spinach1 bunch3d leftproduce
Salmon fillet0.75 lb2d leftprotein
Cilantro1 bunch1d leftproduce
Brown rice2 cups8mopantry
Chicken thighs1.25 lb5d leftprotein
Garlic1 head1moproduce
Olive oil1 bottle12mopantry
Tonight

What can I make tonight?

Dietary

Click to find recipes that use what you have.

// search filters the pantry · click "Find me something" to match

Every dish has a magical signature.

Every recipe in the library carries an element, a planet, a moon phase, and a list of intentions. Click any ingredient to see its own correspondences. The information is layered into the cooking flow, not stuffed behind a tab. Tab between four sample recipes below.

From the recipe library

Rosemary-Lemon Roasted Chicken

A Sunday-dinner bird built for renewal. Lemon brightens, rosemary steadies, garlic holds the line.

  • Prep15 min
  • Cook60 min
  • Serves4
  • Difficultymedium
  • CuisineMediterranean

Ingredients

  • 1 eachWhole chicken
  • 4 sprigsRosemary
  • 2 eachLemon
  • 6 clovesGarlic
  • 3 tbspOlive oil
  • 1 tspSea salt
  • 1 tspBlack pepper

Magical correspondences

Element
🜂 Fire
Planet
Sun
Intentions
Energy · Courage
Best moon
🌔 Waxing gibbous
Chakra
Solar plexus

Method

  1. Pat the chicken dry inside and out. Wet skin will steam, not crisp.
  2. Halve one lemon and stuff the cavity with the halves, two rosemary sprigs, and three crushed garlic cloves.
  3. Zest the second lemon into the olive oil, add the remaining garlic minced, salt, and pepper. Rub the paste over and under the skin.

// 6steps total · full recipe in the live app

// arrow keys cycle the tab strip · click ingredients to expand

A week that reads at a glance.

Seven days, four meal slots each. Color-coded by intention so grounding shows next to abundance shows next to rest. Click a recipe in the sidebar, then click any slot to place it. Production version is built on React Big Calendar with full drag-and-drop and ingredient roll-up to the shopping list.

Meal Planner

Week of April 20 – 26, 2026

Waxing Crescent
Tap a recipe in the library, then tap a calendar slot to plan.
Mon20
Tue21
Wed22
Thu23
Fri24
Sat25today
Sun26
Breakfast
Lunch
Dinner
Snack
Breakfast
Lunch
Dinner
Snack
15 of 28 slots planned

// click to place a recipe · "Generate shopping list" toasts

Cheaper across three stores.

Hearthlight pulls live prices from Kroger, Fred Meyer, and Trader Joe’s, then highlights the cheapest store per item. Switch store affinity and the list adapts; check items off as you shop and the total recalculates live. CSV, email, and print exports ship in production.

Shopping list

9 items

Produce

Protein

Dairy

Pantry

Total at best prices$30.51

// prices are sample data · check off items to update the total

All 22 Major Arcana, click to flip.

The artwork in production is a licensed tarot deck from an independent artist. Gold leaf on forest green, chosen to feel like a kitchen grimoire, not a divination studio. Each card has its own keywords and a one-sentence read in Hearthlight’s warm-but-grounded voice. Tap any card to reveal it, or flip the whole deck at once.

The Major Arcana

Tap any card to reveal.

0 of 12 revealed

// 10 more in production · full 22-card deck ships in the live app

// 22 Major Arcana · click to flip · use Flip all for the full reveal

Magical domain modeling done with rigor.

90 Prisma models capture astrology, tarot, lunar cycles, and ingredient correspondences as a real domain, not a fluff layer. Three specialized AI agents handle three feature domains: meal planning logic, commerce and pricing via Kroger, and the witchy feature set. Each has its own system prompt and tool surface.

Real-world commerce complexity: unit normalization, price history, confidence scoring on AI estimates, deep-link checkout. Multi-household with role-based access (owner, guardian, member, child, guest), per-member dietary profiles, and a permissions module. All the unsexy parts most SaaS stops short of.

Free tier is genuinely useful: inventory, manual planning, shopping list exports, Kroger integration, basic tarot. The paywall sits at AI-driven planning, the grimoire, the coven system, and the marketplace integrations. Magic is for everyone; pay if you want infinite assists.

The market for “household OS” is bigger than the market for meal planning software.

Hearthlight started as a meal planner. Day one I was building what every other meal app on the market builds: pick a recipe, fill a calendar, generate a list. Inside two weeks the data model had grown a household table, an inventory table, a price-history table, a member-permissions table, and a tarot-card table. The thing wanted to be bigger than its category.

The mistake most meal-planning apps make is treating cooking as pure logistics. It is logistics, yes, and also the place a household actually meets itself: dietary needs, religious cycles, who is home this week, what the budget will tolerate, what the season is doing. Software that respects all of that tends to stay installed; software that flattens it to inventory management gets uninstalled in three weeks.

Hearthlight is built by someone who treats the kitchen as the center of a household, and the data model reflects that the whole way down.

// what most meal apps optimize

  • Recipe discovery
  • Calendar fill rate
  • Shopping-list export

// what households actually pay for

  • Software that learns who lives in the house
  • Respect for ritual and seasonality
  • Resilience after a week off
  • A surface that doesn’t feel like a spreadsheet

// the carry-forward

Every product I build now starts with a question about what the household, the team, or the operator is actually trying to do at 3pm on a Tuesday. The feature list comes second.

Hearthlight is not competing with Paprika.

The meal-planning market has good products in it. Paprika is the recipe-clipping standard. Plan to Eat owns the spreadsheet-pleasure crowd. Mealime is the speed-and-simplicity pick. Pantrydex is the inventory-first option. None of them is wrong about what they are.

Hearthlight sits in a different category on purpose: the meal planner that takes seasonality, ritual, household structure, and the moon seriously alongside the practical work of feeding people. The buyer is a different person than the one shopping for Paprika.

  • // Primary user

    Paprika
    Recipe collector
    Plan to Eat
    Spreadsheet planner
    Mealime
    Weeknight cook
    Hearthlight
    The household keeper
  • // Inventory aware

    Paprika
    No
    Plan to Eat
    Partial
    Mealime
    No
    Hearthlight
    Yes (per-household)
  • // Pricing layer

    Paprika
    None
    Plan to Eat
    None
    Mealime
    None
    Hearthlight
    Live Kroger + cross-store
  • // AI assistance

    Paprika
    None
    Plan to Eat
    None
    Mealime
    Basic chat
    Hearthlight
    Three specialized agents
  • // Ritual layer

    Paprika
    None
    Plan to Eat
    None
    Mealime
    None
    Hearthlight
    Tarot, moon, sabbat, intentions

The witchy layer is half the data model.

Full-stack production SaaS shipped solo. 90 Prisma models, 294 API routes, three Stripe-billed subscription tiers, and three specialized AI agents running in production.

346K

Lines of code

294

API routes

90

Prisma models

3

Subscription tiers

Why I shipped a witchy app on a developer portfolio.

Hearthlight is a strange thing to keep on a portfolio site. It is a SaaS for people who plan meals around the moon, and the audience for it isn’t the same audience that hires a fractional CTO.

It stays because it answers a question almost no other case study on this site can answer: can the operator hold a brand world that isn’t their own and ship it whole, built for the audience that actually wanted it.

The technical answer is yes. 346K lines, 90 models, 294 routes, three AI agents, three subscription tiers, billing, multi-household, role-based access, real-time pricing across three grocery chains. The SaaS underneath is real.

The harder answer is also yes. The product feels like Hearthlight, not like a developer’s idea of what Hearthlight should look like. Forum and Cormorant on forest green. A licensed gold-leaf tarot deck from an independent artist, not generic illustration. A free tier that is genuinely useful, not a demo of the paid tier. A voice that is warm and grounded and never tells you to manifest your meals.

If you are building something with a brand world of its own, that is the work: making it the thing it actually is, not just another usable app.

Built for the household keeper, shipped by the operator who lives in the house.

Got a similar build? Let’s talk.

NEXT CASE STUDY

Bloom/2019 - 2022

Cannabis POS company. Founded, built, ran, shut down.

Bloom (founder)

READ THE CASE STUDY