A comprehensive Python-based recipe management application that helps you store, organize, and manage your favorite recipes in a digital format.
- Features
- Installation
- Usage
- Functions Overview
- CSV File Format
- Example Usage
- Data Persistence
- Error Handling
- User Experience Features
- Contributing
- Add New Recipes: Store recipes with detailed information including ingredients, instructions, prep time, difficulty, and category
- View All Recipes: Display all stored recipes with complete details
- Search by Ingredient: Find recipes containing specific ingredients
- Random Recipe Suggestion: Get random recipe recommendations
- Rate Recipes: Add 1-5 star ratings to your recipes
- View by Rating: See recipes sorted by their ratings
- Recipe Categories: Organize recipes by meal type (Breakfast, Lunch, Dinner, Dessert)
- Difficulty Levels: Classify recipes as Easy, Medium, or Hard
- Cook Tracking: Mark recipes as cooked and track cooking dates
- Nostalgic Recipes: View recipes you haven't cooked in a while (3+ days)
- Ingredient Scaling: Scale recipe ingredients for different serving sizes
- Add to Shopping List: Add recipe ingredients to a persistent shopping list
- View Shopping List: See all recipes and ingredients you plan to buy
- Clear Shopping List: Remove all items when shopping is complete
- Date Tracking: Track when recipes were added to the shopping list
- Python 3.x
- Standard Python libraries (csv, random, uuid, datetime)
- Clone or download the repository
- Ensure you have Python installed on your system
- Navigate to the project directory
- Run the application:
python main.py
Run the main.py file to start the Ratatouille application:
python main.py
=== Ratatouille ===
1. Add a new recipe to the collection
2. Search for recipes by ingredient
3. View all recipes
4. View a random recipe suggestion
5. Rate a recipe
6. View recipes sorted by rating
7. Cook a recipe
8. View recipes that you didn't cook in a while
9. Scale ingredients for a recipe
10. Create a shopping list
11. Exit
main()
- Main application loop and menu handlerdisplay_menu()
- Shows the main menu optionsadd_recipe()
- Add new recipes to the databaseview_all_recipes()
- Display all stored recipes
recipes_by_ingredients()
- Search recipes by ingredientview_random_recipe()
- Get random recipe suggestionsview_recipes_sorted_by_rating()
- View recipes sorted by rating
rate_recipe()
- Add or update recipe ratingscook()
- Mark recipes as cooked and update last cooked datenostalgic_recipes()
- Find recipes not cooked recentlyscaling_ingredients()
- Scale recipe ingredients for different serving sizes
shopping_list()
- Shopping list management menuadd_recipe_to_shopping_list()
- Add recipe ingredients to shopping listview_shopping_list()
- View and manage shopping list items
recipe_id,name,ingredients,prep_time,cooking_instructions,difficulty,category,rating,last_cooked
- Select option 1 from the main menu
- Enter recipe name: "Chocolate Chip Cookies"
- Add ingredients with quantities
- Set preparation time: 30 minutes
- Add step-by-step instructions
- Choose difficulty: Easy
- Select category: Dessert
- Select option 10 from the main menu
- Choose option 1 to add a recipe
- Select "Chocolate Chip Cookies"
- Recipe ingredients are added to your shopping list
- Use option 2 to view your complete shopping list
- Select option 5 from the main menu
- Choose a recipe from the displayed list
- Enter a rating from 1-5 stars
- Rating is saved and can be viewed in sorted lists
- All recipe data is stored in
recipes.csv
- Shopping list data is stored in
shopping_list.csv
- Files are automatically created if they don't exist
- Data persists between application sessions
The application includes comprehensive error handling for:
- File not found errors
- Invalid user input
- CSV reading/writing errors
- Recipe not found scenarios
- Invalid rating values
- Emoji Integration: Visual indicators throughout the interface
- Clear Formatting: Well-organized output with separators
- Input Validation: Prevents invalid data entry
- User-Friendly Messages: Clear success and error messages
- Menu Loop System: Easy navigation between features
This project was developed as part of a Data Science Bootcamp. Contributions and improvements are welcome!
Enjoy cooking with Ratatouille! 🍳👨🍳