Passion Project

Culinode

Self-hosted recipe management with AI-powered generation, meal planning, and smart shopping lists

Product Designer & Developer 2 Months (Ongoing) Web App (Self-Hosted) React, TypeScript, Express, PostgreSQL, Docker

The Setup

A self-hosted kitchen platform for people who want their recipes to stay theirs.

Culinode is a full kitchen management app — recipes, meal plans, pantry, shopping lists, and multi-provider AI — designed and built end-to-end in two months. It runs on your own hardware with a single Docker command, no cloud account required.

Pulls scattered recipes into one place you actually own.

Bookmarks, screenshots, text threads, and printed notes all collapse into a single searchable library. Because the whole stack is self-hosted, nothing gets paywalled, migrated, or sunset out from under the person cooking.

Turns a weekly meal plan into a shopping list without the busywork.

Plan the week, and the shopping list generates itself — grouped by aisle, de-duplicated across recipes, and cross-checked against what’s already in the pantry. The part of meal planning that usually burns an hour on Sunday just stops being work.

Culinode recipe library with category filters, search, and AI generation

The Landscape

Recipe apps either lock you in or leave everything to you.

Most home cooks keep recipes scattered across bookmarks, screenshots, messaging apps, and paper notes. The mainstream apps that solve the storage problem come with subscriptions, walled gardens, and the constant risk of getting shut down or re-priced — taking the collection with them.

The self-hosted alternatives solve ownership but stop at storage. Meal planning, pantry tracking, shopping list generation, and AI assistance are left as exercises for the user. I wanted the full workflow in one place, running on my own hardware.

Culinode recipe detail with serving multiplier, ingredients, and instructions

Recipe detail with serving multiplier, ingredient checklist, and numbered instructions.

The Mission

Ship a full kitchen platform — not just a recipe box — that one person can run at home.

Design and build an end-to-end tool covering recipes, meal planning, pantry, and shopping lists, with optional multi-provider AI. It had to deploy with a single Docker command, keep all data local, and still feel like a real product — not a weekend hack.

The Moves

Four bets, shipped in sequence.

01

PRD first, monorepo second, working app inside a week

Wrote the PRD in Claude Code, defining the core entities (recipes, ingredients, meal plans, shopping lists) and a monorepo layout with a React frontend, Express backend, and shared TypeScript types. The first working version — recipe CRUD with URL import — was running in Docker inside the first week, which set the pace for everything that came after.

Culinode recipe library
02

A weekly meal plan that shows enough without overwhelming

The meal planner was the biggest design challenge. A weekly calendar needs to surface recipe name, servings, and cook time per meal without turning into a wall of text. The answer was a vertical day-by-day layout with color-coded meal type badges and inline stat cards that aggregate nutrition and prep time across the full plan.

Culinode weekly meal plan with macro bars and day-by-day schedule
03

Shopping lists and pantry that talk to each other

Shopping lists generate automatically from any meal plan, grouping ingredients by category — Protein, Dairy, Produce, Pantry — and consolidating duplicates so two recipes that both need garlic show up as a single line with the combined quantity. The pantry layer tracks what’s on hand and cross-checks against the list so nothing gets bought twice.

Culinode shopping list grouped by category with progress tracking Culinode pantry inventory with expiration tracking
04

Optional multi-provider AI, plus a gamification loop for daily use

The AI integration mirrors the pattern I used in Cortex: pick a provider (OpenAI, Anthropic, Google AI, or local Ollama), configure it per account, and the rest of the app works identically without any API key at all. A gamification layer on top — levels, points, streaks, and 16 achievements — exists because cooking habits form faster when there’s a visible progress loop to return to.

Culinode cooking analytics with variety score and meal type distribution Culinode achievements page with levels, points, and streaks

The Payoff

A working kitchen platform, running at home, in two months.

Culinode ships as a single-command Docker deploy with recipes, meal planning, pantry, shopping lists, analytics, achievements, and optional multi-provider AI all working end-to-end. It’s the full scope I would have scoped down in a client engagement — built solo, on my own hardware, in a compressed timeline.

4

AI providers supported

2 Months

Solo design + build

Docker

One-command deploy

Looking Back

Scope discipline is what made the full scope possible.

The temptation on a passion project is to chase features sideways. Writing the PRD first and sequencing the bets — storage, then planning, then lists and pantry, then AI and gamification — meant each layer landed on a stable one underneath. The lesson I keep pulling forward: a clear spec and a tight loop let a solo designer ship a product-sized surface area in the time a spec-less team spends arguing about tabs.

Back to All Projects