Transform your ingredients into delicious recipes with AI.
MealMind is a mobile app that answers the daily question: "What can I cook with what I have?" Input your ingredients via text or photo, get AI-generated recipes tailored to your mood, and cook with step-by-step guidance including timers.
- Ingredient Input - Add ingredients manually or scan your fridge with your camera
- AI Recipe Generation - Get personalized recipes based on your ingredients and preferences
- Recipe Editor - Customize AI-generated recipes before saving
- History - Browse all generations, filter by favorites, swipe-to-delete
- Cooking Mode - Step-by-step instructions with per-step timers
- AI Model Selection - Choose from multiple AI providers (Gemini, OpenAI, Anthropic)
- Premium Tier - Unlock advanced AI models with a one-time payment
| Layer | Technology |
|---|---|
| Framework | Expo SDK 54 + React Native |
| Routing | Expo Router (file-based) |
| Backend | Convex (serverless, real-time) |
| Auth | Convex Auth (email + Google OAuth) |
| AI | AI SDK 6 (Gemini, OpenAI, Anthropic) |
| Payments | Stripe (React Native SDK) |
| Styling | Tailwind CSS via Uniwind |
| UI Components | React Native Reusables |
mealmind/
├── app/
│ ├── (auth)/ # Auth screens
│ │ ├── sign-in.tsx
│ │ └── sign-up.tsx
│ ├── (tabs)/ # Main app tabs
│ │ ├── index.tsx # Home - ingredient input
│ │ ├── history.tsx # Recipe history + favorites filter
│ │ └── settings.tsx # Profile & preferences
│ └── recipe/
│ ├── [id].tsx # Recipe detail
│ └── cook.tsx # Cooking mode
├── convex/ # Backend functions
│ ├── schema.ts # Database schema
│ ├── ai.ts # AI actions (extract, generate)
│ ├── recipes.ts # Recipe CRUD + paginated list
│ ├── users.ts # User profile
│ ├── favorites.ts # Favorites toggle
│ ├── models.ts # AI model config
│ └── stripe.ts # Payment processing
├── hooks/
│ ├── use-ingredients.ts # Local ingredient storage
│ ├── use-cached-data.ts # Offline caching for lists
│ └── use-keyboard-height.ts
├── components/
│ ├── ui/... # Reusable UI primitives
│ └── ...
├── types/... # Shared TypeScript types
└── lib/... # Utility functions
- Bun (package manager)
- Expo CLI
- Convex account
- iOS Simulator / Android Emulator / Physical device
-
Clone the repository
git clone https://github.com/Bug-Finderr/mealmind.git cd mealmind -
Install dependencies
bun install
-
Set up Convex
bunx convex dev
Follow the prompts to create a new project or link an existing one.
-
Configure environment variables
Edit
.env.localin the project root:EXPO_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key
Add secrets to Convex dashboard:
GOOGLE_GENERATIVE_AI_API_KEY- Google AI API keyOPENAI_API_KEY- OpenAI API key (for premium)ANTHROPIC_API_KEY- Anthropic API key (for premium)STRIPE_SECRET_KEY- Stripe secret key
-
Seed the AI models database
bunx convex run internal.models:seed
-
Start development servers
bun dev
This starts both Expo and Convex dev servers via mprocs.
- iOS Simulator: Press
iin the terminal - Android Emulator: Press
ain the terminal - Physical Device: Scan QR code with Expo Go app
bun dev # Start Expo + Convex dev servers
bun dev:expo # Start Expo only
bun dev:db # Start Convex only
bun lint # Run Biome linter with auto-fixbunx --bun @react-native-reusables/cli@latest add [...components]| Table | Description |
|---|---|
users |
User profiles with premium status and model preferences |
recipes |
Generated/saved recipes with ingredients and steps |
models |
Available AI models with tier (free/paid) |
Note: Ingredients are stored locally (AsyncStorage) not on the server. They're transient scratch-pad data used only until recipe generation.
recipes
ingredients[]- Array of{ name, amount, unit? }steps[]- Array of{ order, instruction, timerMinutes? }favorited- Boolean for favorites filterarchived- Soft delete flag (swipe-to-delete)meta- Object containing{ cookTimeMinutes, servings, tags[], aiGenerated }
users
isPremium- Unlocks paid AI modelspreferences- Object containing{ imageAnalysisModel, recipeGenerationModel }
MealMind uses the Vercel AI SDK to support multiple providers.
Users can select their preferred model in Settings. Premium models require a $9.99 one-time upgrade.
MealMind supports:
- Email/Password - Traditional signup/login
- Google OAuth - One-tap sign-in
Authentication is handled by Convex Auth with secure session management.
This project is licensed under the MIT License - see the LICENSE file for details.
- Expo - React Native framework
- Convex - Backend platform
- Vercel AI SDK - AI integration
- React Native Reusables - UI components
- Stripe - Payment processing
This file was formatted with AI assistance.