Inspiration

My wife and I kept discussing what to cook that week, and then forgetting what we'd agreed on. The recipes we wanted to try were saved across different social networks, and finding the right one at cooking time was hopeless.

I tried everything: notes on my phone, a plan on the fridge, other apps. Notes get lost, the fridge isn't visible from the store, and the apps turned out to be huge recipe databases, cold and overloaded. I wanted something warm and cozy.

What I liked most was how a hand-drawn plan on paper looks. That's how Mealsketch started: I digitized that plan and made it so the whole family sees the same week. Now it's used not just by my wife and me, but by friends and by people who found it on the App Store.

What it does

Mealsketch is a weekly meal plan your whole family can see.

  • One shared week. Pick a few recipes and the week fills itself. Everyone in the household sees the same plan.
  • Family recipes. Save the dishes you actually cook, so a partner or kid can open one and cook it without texting you.
  • A shopping list that writes itself. It's built from the plan and sorted by category, and you tick items off as you shop. It works offline in the store.
  • Invite by link. Family members join from any device through a web link.
  • AI helpers. Import a recipe from a link or a photo, and estimate its nutrition and cost.
  • Hand-drawn UI. Every box, button and underline is sketched, so it feels like a notebook rather than a dashboard.
  • Available in English, German, Ukrainian and Russian.

Mealsketch Pro (RevenueCat): planning, recipes and the shopping list stay free for good. Pro is only for what actually costs money to run: the AI calls. It also makes room for families larger than two.

How I built it

  • App: Expo / React Native universal app. iOS comes first, with the web version sharing the same codebase. Rough.js draws the sketchy UI, and TanStack Query persists data for offline use.
  • Backend: Laravel JSON API, with the app and API running on a Hetzner VPS via Dokploy.
  • AI: OpenAI for recipe import from a URL or photo, and for nutrition and cost estimates.
  • Monetization: RevenueCat for subscriptions and entitlements. Its webhooks sync Pro status to the backend, so Pro belongs to the family, not just the person who bought it.
  • Credits: each family shares one pool of AI credits, recorded in a database table with one row per call. A credit is spent only when the call succeeds, so a broken link never costs you anything.

Challenges I ran into

  • Where the paywall goes. I had promised the core would stay free. The fair line turned out to be "you pay for what costs me money": AI calls, not planning your week.
  • Credits per family, not per person. All the data is shared by the family. Per-person credits would have given a family of four four times the quota on the same recipes, and invite codes would have become a way to farm credits. So both credits and Pro are family-level.
  • A shared limit across several endpoints. Laravel's built-in rate limiters keep a separate bucket for each route. I wrote my own middleware that checks credits before the request and records usage only after a successful response.
  • Testing purchases before App Store Connect was ready. I used a StoreKit Configuration File with RevenueCat to run the full purchase → entitlement → webhook flow locally.
  • Hand-drawn UI on native. Redrawing sketchy shapes on every render hurt performance. Some styles that worked on web also broke on iOS.

Accomplishments that I'm proud of

  • Mealsketch is live on the App Store. Real families use it, starting with my own.
  • The free tier is actually useful. Monetization is honest and tied to real costs.
  • One codebase covers iOS and web, in four languages, with an offline shopping list.
  • A visual identity that doesn't look like every other meal-planning app.
  • Built solo, in public.

What I learned

  • Price the thing that costs you money. Users get "AI features are paid" right away. A paywall on planning their own dinner would feel like a trap.
  • The unit of a family app is the household. Billing, limits and sharing all have to follow that.
  • RevenueCat takes away most of the StoreKit pain. The real design work is entitlements and edge cases, like what happens when the person who pays leaves the family.
  • Ship small and ship early. Being on the App Store taught me more than any amount of planning.

What's next for Mealsketch: Family Meal Plan

  • Android, from the same Expo codebase.
  • Free-form recipe tags alongside meal types.
  • Smarter week filling based on what the family actually cooks and likes.
  • Tuning the free credit limit and Pro pricing based on real usage data.
  • Growing through families, with sharing and invites as the main channel.
Share this project:

Updates

Submission history