MealMapper

A cross-platform app that turns a week of meals into a sorted grocery list and a one-tap store order, built for two people sharing one kitchen.

React NativeExpoTypeScriptSupabaseKroger API
MealMapper screenshot

Overview

MealMapper came out of a chore my wife and I repeat every single week: decide what we're eating, then turn those decisions into a grocery order. The deciding is the fun part. The translation is pure friction: cross-referencing recipes, consolidating ingredients, remembering we're already out of garlic, retyping the whole thing into a store app.

So MealMapper follows one straight line and removes the friction at every step:

plan the week → auto-build the grocery list → order it, without retyping a thing.

It was also my first project on a real backend. Supabase handles auth, a Postgres database, and realtime sync, so both of us edit the same plan and the same list from our own phones and see each other's changes live.

Plan a week of meals

The week is the home screen. Tap any day, and a picker opens with your whole recipe library: searchable, filterable by how the meal cooks (Quick Prep, Slow Cooker, Rice Cooker), and with a Surprise Me button for the nights you can't decide. The library itself is organized into collections you define ("Kids meals," "Pasta," "Quick meals"), with favorites and prep times on every card.

The week view with a meal planned for each day, tagged by cook style and prep time.
The recipe library, organized into collections with favorites and filters.

Every recipe in one place

You shouldn't have to retype a recipe you found online. Paste a URL and MealMapper reads the page's structured recipe data, pulling the photo, ingredients, instructions, times, and servings into a clean preview before you save it. Pick a different hero image from the page's thumbnails if you like. You can also enter one by hand. Every saved recipe gets Details / Ingredients / Cook tabs, a serving scaler that adjusts quantities, and a quiet "times made" counter.

Importing a recipe from a URL: photo, metadata, and a parsed ingredient list.
A saved recipe with details, serving scaler, and a times-made stat.

A grocery list that builds itself

This is the step that used to eat the most time, so it's the step MealMapper automates completely. From the week's planned meals it generates one consolidated list, merging duplicate ingredients across recipes, carrying their quantities, and sorting everything into the order you actually walk a store: produce, bakery, meat, dairy, pantry, frozen. Pantry staples you always keep on hand are tracked separately so they don't clutter the run. Check items off as you shop, and because the list lives on the household, whoever's at the store and whoever's at home are looking at the same thing in real time.

Order without retyping it

A finished list is only half the job. You still have to buy it. MealMapper closes that gap by connecting straight to the store. Link a Kroger account and it matches each item on your list to a real product on the shelf, with live prices, sale flags, and pickup-or-delivery availability, so you can confirm the exact thing you meant and send the whole cart to Kroger in one pass. Prefer Instacart? The same list hands off there instead.

Matching grocery items to real Kroger products with live prices, sale flags, and pickup/delivery filters.

Built on a real backend

Under the product-y surface, MealMapper is a single Expo + React Native codebase that ships to iOS, Android, and the web build linked above. State is split between a Zustand store for UI and TanStack Query for server data. Supabase is the backbone (auth, Postgres, and Realtime for the live household sync), and the parts that have to talk to the outside world run as Supabase Edge Functions: a recipe importer that parses structured recipe markup from arbitrary URLs, and the Kroger OAuth, product search, and cart endpoints (plus Instacart link generation) that make the one-tap order possible.

My role

Everything: concept, product and UX design, and the full-stack build, from the Supabase schema and edge functions through to the cross-platform app and this web deployment.

Live demo