Dinner, together.

Every evening someone asks what's for dinner? and the answer depends on whoever is less tired. Mangiare is the meal-planning app I designed and built for my own household: save recipes from anywhere, plan the week together, shop from one list.

Role
All of it, solo
Since
August 2026
Runs on
Any phone, as an app
Mangiare's home screen: 'Ciao, Boffinos!', four dinners planned this week, and tonight's beef and red lentil curry with a button to snap a photo of it

Where dinner goes wrong.

  1. 01

    Recipes are scattered

    Instagram saves, TikTok bookmarks, screenshots, browser tabs, cookbooks and a parent's handwritten cards.

  2. 02

    Planning falls on one person

    One partner ends up deciding dinner most nights.

  3. 03

    Shopping is uncoordinated

    Two people, two lists, one forgotten ingredient, and food already in the fridge gets bought again.

1Save

Save recipes from anywhere.

Paste a link or take a photo, and Mangiare turns it into a recipe with a photo, servings, steps and ingredients. Drag one of these into the phone, or tap it.

    60 recipes
    Drop a recipe hereLinks, videos, photos, even Nonna's handwriting

    5 recipes waiting to be saved

    2Plan

    Pick a recipe, pick a day.

    Either of you can put a recipe on any night, with no approvals and no pending states. Drag recipes onto the week (or tap one, then a day), or let Auto-plan fill the gaps with recipes that share ingredients.

    Ingredients shared between meals

    0 shared · shopping list 0 items

    3Shop

    One list for the shop.

    The week above becomes this list, live: sorted by aisle, merged across recipes, minus what's already in the fridge. Tick things off, empty the fridge, or send your partner to the shop and watch the list update on its own.

    To buy0/0

    Got a job at work that runs on three apps and a group chat? I can build the one app for it →

    The real thing, from our kitchen.

    Screens from the household that uses it every night: mine.

    ⚙Under the hood

    What happens when you paste a link.

    Links break, sites block scrapers, and some videos only say the recipe out loud. So every import has a fallback, and every paid call reserves its cost in a ledger first. Pick a link and follow it through.

    Built with

    • Next.js 16
    • React 19
    • TypeScript
    • Tailwind CSS v4
    • Self-hosted Supabase
    • Postgres + Row Level Security
    • Realtime
    • Node & Python workers
    • yt-dlp + ffmpeg
    • Gemini · Claude · OpenAI
    • Playwright · Vitest · pgTAP
    Merged pull requests
    370+
    Commits
    1,100+
    Database migrations
    100+
    Test files
    220

    What it taught me.

    • Shared state is a product decision

      Dropping the "pending" step between a recipe and the plan made planning together feel natural.

    • The real web is messy

      Reliable imports needed layers: a direct fetch, a browser render, a scraping service, then audio transcription.

    • One vocabulary beats clever matching

      Every ingredient maps to one canonical name, so the list, the fridge, overlap and swaps all read the same data.

    • Paid APIs need hard budgets

      An atomic, fail-closed spend ledger lets me open AI features to real users without risking the bill.

    • Owning the servers is a trade-off

      Self-hosting cut costs and kept control, and made backups, upgrades and network security my job.

    I work on client systems the same way: watch how people do the job, then cut the steps nobody needs. Tell me about yours →