How arnavvvvvvvvvv/smart-meal-planner works
Smart Meal Planner is a web app for generating and saving recipes, managing a pantry, scheduling meals, and organizing groceries. Users enter through the React app, authenticate, then use protected feature pages that call the REST API. On the backend, routes dispatch to domain controllers, which use models for persistent data; recipe generation and pantry suggestions also use Gemini. The README documents the broader feature set; controller-to-model and request-flow links are supported by sampled source, while unsampled route wiring is represented at directory level.
Main entry points: models Domain models · routes REST routes · api.js API client · recipeController.js Recipe controller
Components 21
Web client
- React app
frontend/AIrecipe/src/App.jsx - Auth context
frontend/AIrecipe/src/context/AuthContext.jsx - API client
frontend/AIrecipe/src/services/api.js - Recipe pages
frontend/AIrecipe/src/pages/RecipeGenerator.jsx - Pantry page
frontend/AIrecipe/src/pages/Pantry.jsx - Meal planner
frontend/AIrecipe/src/pages/MealPlanner.jsx - Shopping list
frontend/AIrecipe/src/pages/ShoppingList.jsx - Account pages
frontend/AIrecipe/src/pages/Settings.jsx
API and domain
- Express server
backend/server.js - REST routes
backend/routes - Auth controller
backend/controllers/authController.js - Recipe controller
backend/controllers/recipeController.js - Pantry controller
backend/controllers/pantryController.js - Meal plan controller
backend/controllers/mealPlanController.js - Shopping controller
backend/controllers/shoppingListController.js - User controller
backend/controllers/userController.js
Persistence
- Domain models
backend/models - PostgreSQL
backend/config/db.js
External services
- Gemini integration
backend/utils/gemini.js - Google Gemini
Other components
- User
Connections 28
- User → React app: uses
- React app → Auth context: provides auth
- Auth context → API client: sends auth requests
- Recipe pages → API client: requests recipes
- Pantry page → API client: requests pantry
- Meal planner → API client: requests plans
- Shopping list → API client: requests shopping
- Account pages → API client: requests account
- API client → Express server: REST requests
- Express server → REST routes: mounts routes
- REST routes → Auth controller: dispatches auth
- REST routes → Recipe controller: dispatches recipes
- REST routes → Pantry controller: dispatches pantry
- REST routes → Meal plan controller: dispatches plans
- REST routes → Shopping controller: dispatches shopping
- REST routes → User controller: dispatches users
- Auth controller → Domain models: reads and writes users
- Recipe controller → Domain models: reads and writes recipes
- Recipe controller → Domain models: reads pantry items
- Pantry controller → Domain models: manages pantry items
- Meal plan controller → Domain models: manages meal plans
- Shopping controller → Domain models: manages shopping items
- Shopping controller → Domain models: moves checked items
- User controller → Domain models: manages profiles
- Domain models → PostgreSQL: persists domain data
- Recipe controller → Gemini integration: generates recipes
- Recipe controller → Gemini integration: requests pantry suggestions
- Gemini integration → Google Gemini: calls