MealeoPrivate · invite only
FeaturesAssistantUnder the hood

A household kitchen app

Your kitchen's home base.

Mealeo is the app I built so my household could stop juggling recipes, meal plans and grocery lists across five different places. It covers everything from “what should we eat?” to the last item checked off at the store.

Mealeo is private.

It runs for my household on Google sign-in, and only invited accounts can get in. There's no public sign-up. Everything on this page is the real UI running on sample data, so try it out.

Explore the features ↓
Home

Good evening

What's cooking?

Six sections, one kitchen

These are the app's own navigation doodles. Pick one to jump to a live demo.

Pantry

What's on hand

Cookbook

Browse & rate

Spin

Random pick

Menu

Plan the week

Shopping List

Check it off

Plants

30 a week

Cookbook

One recipe box for the whole household

Every recipe we cook, shared between both of us, with ratings, tags and photos so the good ones float to the top.

  • Import a recipe from a URL, or snap a photo of a cookbook page and let Gemini transcribe it for review
  • Recipes can use other recipes as ingredients (pizza dough inside pizza), with cycle detection
  • Group ingredients and steps into sections like “For the crust”, with per-step timings
  • Each person rates separately; filter by genre, flavor, meal and tag
  • A clean print/export view for sharing a recipe outside the app

Live demo · Real Cookbook cards, tag badges and rating widget. Try clicking a star or a card.

Weeknight Lasagna

Weeknight Lasagna

★ 4.8 · crowd pleaser, meal prep
Crispy Black Bean Tacos

Crispy Black Bean Tacos

★ 4.6 · quick, vegan, weeknightShared
Red Lentil Coconut Curry

Red Lentil Coconut Curry

★ 4.9 · vegan, meal prep
Tofu Pad Thai

Tofu Pad Thai

★ 4.3 · quick, weeknight
Peanut Butter Overnight Oats

Peanut Butter Overnight Oats

★ 4.1 · quick, meal prep, veganShared
Charred Corn Salad

Charred Corn Salad

★ 4.4 · quick, vegan

Red Lentil Coconut Curry

Serves 4 · rate it below

4.9 avg
IndianSpicy
Dinner
veganmeal prep

Cook mode

A big-tap checklist for when your hands are messy

Start cooking at any serving size and get a full-screen checklist scaled to match, with ingredients grouped by type and steps grouped by section.

  • Quantities scale and show as kitchen fractions (tap one to see the decimal)
  • Progress lives on the device, so you can leave mid-recipe and pick it back up
  • Convert units per session (“1½ tbsp fresh ginger ≈ ¾ tsp ground”)
  • Sessions are snapshots, so editing the recipe can't break a cook in progress

Live demo · The real cook-mode screen, scaled from 4 to 6 servings. Check things off.

Red Lentil Coconut Curry

0/11

Ingredients

Legumes

  • cups red lentils — rinsed

Pantry

  • cans coconut milk
  • cup red curry paste

Produce

  • yellow onion — diced
  • tbsp fresh ginger — grated
  • cups spinach

Steps

Prep

  • Rinse the lentils until the water runs clear (2 min)
  • Dice the onion and grate the ginger (5 min)

Cook

  • Soften the onion in oil, then fry the curry paste and ginger (6 min)
  • Add lentils, coconut milk and 2 cups water; simmer until tender (20 min)
  • Stir in the spinach until just wilted (1 min)

Spin

Can't decide? Spin for it

Narrow by meal, genre, flavor or tag, then let the wheel pick something from the cookbook.

  • Filters combine across axes, so “spicy vegan dinner” works
  • Live count of how many recipes match before you spin

Live demo · The real Spin picker, on 8 sample recipes.

Meals

Genre

Flavor profile

Tags

8 recipes match

Menu & nutrition

Plan the week, and see what it adds up to

Meal plans are freeform: any number of days, dated or not, with whatever sections you like. The home screen always knows what's on today.

  • Link one meal to another as leftovers, and track prep-ahead tasks on the day they're due
  • Scale each meal with batch multipliers, split across however many people are eating
  • Daily nutrition against personal targets (Mifflin–St Jeor and DRI tables), including plant-based risk nutrients like B12, iron and iodine
  • Gemini estimates macros for any ingredient or recipe, then you review the numbers before they're saved
  • Simple plans: just pick a few recipes for a date range and you're done

Live demo · Real Simple Plans card, nutrition strip and periodic-table macro grid. Tap a tile.

Periodic table of today · tap a tile

Shopping list

From meal plan to shopping list in one tap

Build a list from a meal plan or any set of recipes. Every ingredient is scaled, merged and sorted by aisle, and the household checks it off together in the store.

  • Gemini merges the same ingredient across different units (“4 carrots” + “2 cups chopped”) and explains each merge
  • Linked sub-recipes expand recursively, so their own ingredients land on the list
  • Photograph a handwritten list and it's matched against the pantry
  • Merge two lists, add one-off items, and leave notes for whoever's shopping

Live demo · Built from the same checklist parts (checkbox, progress bar, fraction quantities). Check things off.

This week's shop

from “This week” · 4 recipes
1/8

Produce

  • carrots

    Combined 4 whole carrots (Lasagna) + 2 cups chopped carrots (Curry) — about 2 carrots per cup.

  • inch knob fresh ginger
  • bag (10 oz) spinach
  • limes

Bulk

  • cups red lentils

International

  • cans coconut milk

Bakery

  • corn tortillas

Dairy & Alt

  • gallon oat milk

Pantry

An ingredient dictionary everything else builds on

Every ingredient is saved once, with its aisle, food type and tags. Recipes, lists and nutrition all draw on it.

  • Type-ahead everywhere, ranked by how often you actually use each ingredient
  • Find and merge duplicates (“scallion” / “green onion”), and clean up units in bulk
  • Per-ingredient macros, estimated by Gemini from real data and reviewed before saving

Live demo · Real Pantry cards. One is shared from a housemate's library.

Red lentils(cup)

BulkLegumes
proteinstaple

Coconut milk(can)

InternationalPantry
dairy-free

Fresh ginger(tbsp)

Shared
ProduceProduce
aromatic

Corn tortillas

BakeryGrains
gluten-free

Plants

30 plants a week

A small personal tracker for eating a variety of plants. Fruit, veg, legumes, grains, nuts and seeds count for a point each; herbs and spices count for a quarter.

  • Private to each person, even within a shared household
  • Your usual plants are one tap away, ranked by how often you log them
  • Resets every Sunday in your own timezone

Live demo · The real Plants tracker. Add a plant, tick herb/spice, or remove one.

Gemini assistant

A chat panel that knows what you're looking at

Every section has its own assistant. It can see the recipe, plan or list on screen, look up details on its own, and propose edits through the same actions the UI uses.

  • Edit recipes, build meal plans, or sort a shopping list by store aisle, all from chat
  • Read-only lookups run on their own; anything that changes data waits for you to approve it
  • A manual mode copies the prompt out for your own Gemini session when you'd rather not use the API

Illustration · the live panel needs a signed-in Gemini session

Assistant

Context: Red Lentil Coconut Curry

We're out of spinach — swap in kale and bump it to 4 cups?

Looking up ingredient details…

Kale holds up better in a long simmer, so I'd add it with the lentils instead of at the end. Here's the change:

updateRecipeIngredient

3 cups spinach → 4 cups kale, stemmed & chopped

Under the hood

How it's built

Next.js 16 (App Router, Server Actions)React 19TypeScript + ZodSupabase Postgres with row-level securityGoogle OAuthGemini (structured JSON + tool calling)Tailwind CSS v4PlaywrightVercel

Sharing enforced by the database

Two SQL helpers, shares_library_access() and is_group_member(), back nearly every row-level-security policy. Housemates share recipes and lists, while things like the plant log stay private to one person.

AI that suggests, never silently writes

Every Gemini call goes through one structured-JSON client. Estimates come back for review before anything is saved, and chat tool calls that change data wait for an explicit Apply.

Recursive recipes

Recipes can be ingredients of other recipes. Cycles are rejected before every write, and shopping lists expand the whole graph, multiplying servings at each level.

Built on the free tier

It runs on Vercel and Supabase free plans. Recipe photos are links instead of uploads to stay under storage quotas, and the queries assume a household's worth of data.

Try the theme switch in the header: classic light, classic dark, and the Djaunt brand palette all come from the same CSS tokens the app uses.

Mealeo is a personal project, built for one household and closed to new sign-ups.