/chef

AI powered Food recommendation for lazy people

GNU General Public License v3.0GPL-3.0

Note : this was generated with GPT and then edited. Will be marking anything that is done with gpt with a [GPT] tag

Chef: Your Personal Cooking Assistant

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

Features (TBD)

  • 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.

Expected Flow for a User

  • 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.

Prerequisites

  • Python 3.7+
  • Flask or FastAPI
  • SQLite or PostgreSQL
  • React or React Native (for frontend, optional)

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/chef.git
    cd chef
  2. Create a virtual environment and activate it:

    python3 -m venv venv
    source venv/bin/activate  # On Windows, use `venv\Scripts\activate`
  3. Install the dependencies:

    pip install -r requirements.txt
  4. Set up the database:

    python setup_db.py
  5. Start the server:

    python app.py

API Endpoints

Inventory Management

  • GET /inventory: Retrieve current inventory.
  • POST /inventory: Add or update ingredients in inventory.
    • Request body example:
      {
        "ingredient": "tomato",
        "quantity": 5,
        "unit": "pieces"
      }

Leftovers Management

  • GET /leftovers: Retrieve current leftovers.
  • POST /leftovers: Add or update leftovers.
    • Request body example:
      {
        "name": "Biryani",
        "servings": 5,
        "expiry_days": 3
      }

Recipe Suggestions

  • GET /recipes: Get recipe suggestions based on current inventory and leftovers.

User Feedback

  • 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."
      }