Note : this was generated with GPT and then edited. Will be marking anything that is done with gpt with a [GPT] tag
Chef is a personal cooking assistant designed to help you manage your kitchen inventory, suggest recipes based on available ingredients, and handle leftovers efficiently. The app also integrates with food delivery services to recommend dishes for ordering when you prefer not to cook or have a cheat day
- Inventory Management: Track ingredients and leftovers in your kitchen.
- Recipe Suggestions: Get recipe recommendations based on your current inventory and leftovers.
- Leftovers Management: Efficiently manage and utilize leftovers in your meals.
- Notifications: Receive reminders to cook or use up leftovers, or to cook in general
- User Feedback: Provide feedback on recipes and track difficulty.
- Food Ordering Recommendations: Get restaurant dish recommendations based on your preferences.
- Shopping List Integration: Generate shopping lists from selected recipes.
-
Initial Setup:
- User installs the Chef app on their device and creates an account.
- User sets up their preferences (e.g., dietary restrictions, favorite cuisines, preferred cooking time).
-
Inventory Management:
- User adds ingredients currently available in their kitchen to the inventory using the app.
- User can use voice commands to update inventory, e.g., "Chef, add 5 tomatoes."
-
Leftovers Management:
- After cooking, user logs leftovers into the app, specifying quantity and expiry date.
- User can check leftover status and get reminders before they expire.
-
Recipe Suggestions:
- When planning a meal, user opens the app to get recipe suggestions based on available ingredients and leftovers.
- App asks if the user is in a hurry or has ample time to cook.
- If in a hurry, the app suggests quick and easy recipes.
- If user has time, the app suggests more elaborate recipes.
- User selects a recipe and gets a detailed list of ingredients and steps.
-
Preparation Time Notifications:
- For recipes requiring advance preparation (e.g., soaking beans), the app sends a notification a day or hours before to remind the user.
-
Cooking and Feedback:
- User cooks the meal using the selected recipe.
- After cooking, user provides feedback on the recipe, including ease of preparation and personal rating.
-
Email Notifications:
- User receives email reminders for cooking, using leftovers, or preparing ingredients for future meals.
-
Shopping List Integration:
- User can generate a shopping list based on selected recipes and add missing ingredients to the list.
- User updates inventory as they purchase new items.
-
Food Ordering Recommendations:
- On days when the user prefers not to cook, the app provides food ordering recommendations based on user preferences and past feedback.
-
Continual Use:
- User continues to use the app to manage their kitchen, get recipe recommendations, and handle meal planning, all tailored to their lifestyle and preferences.
- Python 3.7+
- Flask or FastAPI
- SQLite or PostgreSQL
- React or React Native (for frontend, optional)
-
Clone the repository:
git clone https://github.com/yourusername/chef.git cd chef
-
Create a virtual environment and activate it:
python3 -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
-
Install the dependencies:
pip install -r requirements.txt
-
Set up the database:
python setup_db.py
-
Start the server:
python app.py
- GET /inventory: Retrieve current inventory.
- POST /inventory: Add or update ingredients in inventory.
- Request body example:
{ "ingredient": "tomato", "quantity": 5, "unit": "pieces" }
- Request body example:
- GET /leftovers: Retrieve current leftovers.
- POST /leftovers: Add or update leftovers.
- Request body example:
{ "name": "Biryani", "servings": 5, "expiry_days": 3 }
- Request body example:
- GET /recipes: Get recipe suggestions based on current inventory and leftovers.
- POST /feedback: Submit feedback on a recipe.
- Request body example:
{ "recipe_name": "Paneer Butter Masala", "rating": 4, "comments": "Great recipe but a bit too spicy." }
- Request body example: