Project Case Study

My Kitchen Board

A guest-first family meal planner and kitchen display. Plan a week of meals at the times a household actually eats, turn that week into one aggregated grocery list, and prop a tablet in the kitchen to show what is cooking next. Next.js 16 and Supabase, with an IndexedDB guest mode that works before anyone signs in.

View Live Project →
Category
Product / Family Meal Planning App (PWA)
Platform
Next.js
Client
SERVITH (Internal product)
Type
Web App (PWA) + Kitchen Display
Role
Solo: product definition, domain modelling, Postgres schema and RLS, guest and cloud sync, PWA and brand system.
Goal
Let a household plan the week, shop from one list, and cook from a screen on the counter, without an account standing in the way of the first visit.
Scope
Today, Week, Month, Plan, Meal plans, Recipes, Groceries, Display, Settings, public recipe and meal-plan pages, and a two-locale landing.

Overview

My Kitchen Board is a family meal planner and kitchen display. The landing page states it in one line, "The week's meals. One happy kitchen.", and the promise under it is smaller than most planning tools make: "A little planning. A lot less what's-for-dinner."

The product is currently in Beta, free, and deliberately account-optional.

The Problem

Meal planning apps usually assume three things that real kitchens do not honour. That dinner happens at dinnertime. That everyone in the house eats the same thing. And that a visitor will create an account before they have seen anything work.

A household actually looks like this: breakfast at 7:00 for one child and 7:30 for another, two dishes at 6:00 PM that together are "dinner", a plan that is mostly the same every week, and one person doing the shopping for all of it. My Kitchen Board is built around that shape rather than around a tidy grid.

Key Product Decisions

1) Guest-first, not sign-up-first

The planner opens on a seeded sample week held in IndexedDB. It can be edited, cleared, and used indefinitely with no account; the landing page says so twice, because it is the main objection to overcome: "No account required · Saved on your device."

Signing in with Google is framed as one specific upgrade (the same kitchen on a phone and on a tablet), not as the price of entry.

2) Meals at real times, for real people

A meal is scheduled at an arbitrary household-local time, may overlap with another meal, and targets any combination of family members, including members who have no account and never will. Two dishes at 6:00 PM read as one dinner rather than as a conflict.

3) One grocery list that actually adds up

The week collapses into a single list. Duplicate ingredients merge, quantities scale to the servings planned, and every line keeps its provenance: which recipe version, on which occurrence, contributed it. Quantities are canonicalised with decimal.js (grams for mass, millilitres for volume, units for count), so scaling a recipe to 1.5 servings does not quietly drift.

4) Recipes that keep their history

Recipe versions are immutable. Editing a recipe creates a new version, and a plan that was already made keeps pointing at the text it was planned from. Materialized occurrences deliberately do not auto-pin to the newest version, so last Tuesday's dinner stays what it was.

5) A screen that belongs on a counter

The display view is built for a tablet left standing in the kitchen: today's meals in time order, serving sizes already adjusted, and timers built into the cooking steps. It is a different reading distance from the planning screens, and it is laid out as one.

6) Recurrence, because most weeks repeat

One-time, daily, every-N-day, weekly, every-N-week, and selected-weekday recurrence are all supported, so a standing Taco Tuesday is entered once rather than fifty-two times.

What This Means for the Business

*

The real product, before any sign-up: The full planner runs on the visitor's own device with no account and no connection needed, so the first visit is the actual product rather than a demo.

*

One kitchen on every device: Signing in keeps the same plans on a phone and a tablet, and each household's data is kept strictly separate from every other household's.

*

Sharing a recipe shares only the recipe: Published recipes open for anyone as fast public pages, but show no author, household details or comments, and never open a door to private data.

*

Accurate amounts at the right times: Quantities scale precisely without drifting, meal times follow the household's own time zone, and the core logic and main user flows are covered by automated tests.

*

Installs like an app: The browser offers to install it on the home screen, and going offline shows a clear explanation instead of a browser error.

What This Case Study Demonstrates

*

Designing an offline-first product where the guest path is the product, not a trial

*

Keeping a domain layer framework-free so two storage backends can share it exactly

*

Modelling immutability and provenance so a past plan stays true after the recipe changes

*

Getting decimal-safe quantities and timezone-correct scheduling right at the bottom of the stack

*

Treating CSP, RLS, and public-page exposure as design decisions rather than deployment checkboxes


Live: https://www.mykitchenboard.com/

Role: Solo delivery (product → domain → schema and RLS → PWA → brand)

PortalGet a Free Quote