# DishBook: a recipe keeper and AI meal planner for iPhone and Android, built and run by ODEL

> How ODEL built DishBook, a recipe keeper and meal planner with AI recipe ideas, voice commands, pantry and nutrition tools, on iPhone and Android with a Supabase and Node.js backend.

DishBook is a recipe keeper and meal planner for iPhone and Android, designed, built and run by ODEL. It suggests recipe ideas from ingredients people have, plans meals with a shopping list grouped by aisle, keeps a pantry, allergen profile and nutrition dashboard, and takes voice commands for cooking steps and timers. The app is built with Expo and React Native and talks to Supabase and a Node.js API with Redis, which also checks App Store and Google Play purchases. A Next.js admin panel and a Next.js landing site complete the product, and the app is available in 16 languages. It is ODEL's most complete example of a mobile app with a backend, admin and AI features.

## The problem

Home cooks struggle to decide what to cook, plan meals and keep their favorite recipes in one place. Recipe managers like Paprika and Plan to Eat leave every meal choice to the user. DishBook suggests ideas from what is already in the kitchen and connects them to a plan and a shopping list.

## What ODEL built

- AI recipe ideas from ingredients on hand
- Saved favorites and My Recipes
- Meal planning with a shopping list grouped by aisle
- Pantry list, allergen profile and nutrition dashboard
- Voice commands for cooking steps and timers
- 'What to cook tonight' daily pick with quick actions on Home
- Personalized first recipes from onboarding

## Technology

- **App**: Expo SDK 57, React Native 0.86, React Query and Reanimated
- **Backend**: Supabase and a Node.js (Express, TypeScript) API with Redis and WebSocket, in Docker
- **AI**: OpenAI and Gemini APIs
- **Purchases**: expo-iap (StoreKit and Play Billing), verified with App Store Server Library and google-auth-library
- **Admin and site**: Next.js admin with Supabase, TanStack Table and Remotion; Next.js landing with next-intl
- **Analytics**: PostHog and Meta SDK
- **Native features**: Sign in with Apple, voice and speech, share intent, iOS and Android widgets, dynamic app icon

## Launch and growth

- Live on the App Store (iOS 16.4 or later) and Google Play
- Available in 16 languages
- Version 2.2.0 released 2026-10-13 with a new design, onboarding recipes, a daily pick and an aisle-grouped shopping list
- Free download with All Access Monthly, 6 Months and 12 Months purchases

## What we learned

- One Expo codebase covers iPhone and Android, including widgets on both, which keeps a cross-platform client project to one team of one.
- Purchases are checked on the server against Apple and Google, not trusted from the device alone. Any client app with a backend and subscriptions should do the same.
- Sending user input to an AI provider needs disclosure and permission under Apple's guideline 5.1.2(i), so consent is part of the design, not an afterthought.
- Fewer, better-timed notifications and a more generous free tier were part of the 2.2.0 release: post-launch work often means removing friction, not adding features.

Product page: https://www.odel.dev/app/dishbook

Start a project: https://www.odel.dev/services#start (form) or info@odel.dev. ODEL quotes each project after a short discovery call; it does not publish fixed prices.

Page: https://www.odel.dev/work/dishbook
