Skip to content

vnguyen243/recipe_notebook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Personal Project

Digital Recipe Experiment Notebook

1. Description

This project is a desktop application designed to document and refine users' recipe experiments. Unlike traditional recipe apps, this application emphasizes experimentation by allowing users to log ingredient variations, cooking methods, and outcome notes. It helps users track adjustments over multiple iterations, making it easier to perfect recipes through systematic testing. 🎂🍥🍰

2. Users:

  • Home cooks 🍚 looking to refine their favorite dishes.
  • Professional chefs 🧑‍🍳 experimenting with new techniques and flavors.
  • Food scientists & researchers 👩‍🔬 analyzing ingredient interactions and cooking variables.

3. Why it is interesting:

Cooking is a blend of science and creativity, and an experiment-driven notebook brings structure to this process. This project is exciting because it combines data organization with personal expression, providing a powerful tool for culinary innovation.

User stories

  • As a user, I want to add a new recipe experiment to my notebook, specifying its name, ingredients, preparation steps, cooking time, and notes, so that I can track and refine my experiments.
  • As a user, I want to view a list of all my saved recipe experiments, so that I can easily browse through my past experiments and find specific ones for reference.
  • As a user, I want to add tags (e.g., "sweet", "spicy", "low-calorie") to my experiments and filter recipes by tags, so that I can quickly find experiments that match my preferences.
  • As a user, I want to modify components in each recipe experiment, so that I can easily create the perfect version without having duplicated recipe.
  • As a user, I want to delete a specific reciped out of the recipes collection.
  • As a user, I want to save the entire state of the application, including all my recipes and their details, to a file, so that I can preserve my progress and continue later without losing any data.
  • As a user, I want to load a previously saved state of the application from a file, so that I can resume my work exactly where I left off without re-entering my data.

Instructions for End User

  1. You can add recipe to recipe collection by:
  • Click on "Add Recipe" button in the main menu (first action)
  • Type details for the recipe (detailed instruction on the panel) (second action)
  • Click "OK" to complete adding
  1. You can see my visual component when start the application (opening screen).
  2. You can save the state of my application by clicking on "Save Recipes" button.
  3. You can reload the state of my application by clicking on "Load Recipes" button

Phase 4: Task 2

  1. First attempt: "Thu Mar 27 15:52:37 PDT 2025 Added tag HIGH_CALORIES to Pasta Thu Mar 27 15:52:37 PDT 2025 Added Pasta recipe! (add Xs to Y) Thu Mar 27 15:54:10 PDT 2025 Added tag HOT to Chicken sandwich Thu Mar 27 15:54:10 PDT 2025 Added Chicken sandwich recipe! (add Xs to Y) Thu Mar 27 15:54:38 PDT 2025 Added tag SWEET to Pasta Thu Mar 27 15:55:03 PDT 2025 Updated recipe's name from Chicken sandwich to Chicken thigh sandwich (Modify X in Y) Thu Mar 27 15:55:12 PDT 2025 Saved recipe collection! (Save Y) Thu Mar 27 15:55:32 PDT 2025 Removed Chicken thigh sandwich recipe! (Remove Xs from Y) Thu Mar 27 15:56:48 PDT 2025 Added tag LOW_CALORIES to Sushi Thu Mar 27 15:56:48 PDT 2025 Added Sushi recipe! Thu Mar 27 15:56:52 PDT 2025 Saved recipe collection!"

  2. Second attempt: "Thu Mar 27 15:59:31 PDT 2025 Loaded recipe collection (Load data of Y) Thu Mar 27 15:59:31 PDT 2025 Added tag HIGH_CALORIES to Pasta Thu Mar 27 15:59:31 PDT 2025 Added tag SWEET to Pasta Thu Mar 27 15:59:31 PDT 2025 Added Pasta recipe! Thu Mar 27 15:59:31 PDT 2025 Added tag LOW_CALORIES to Sushi Thu Mar 27 15:59:31 PDT 2025 Added Sushi recipe! Thu Mar 27 15:59:35 PDT 2025 Saved recipe collection!"

Phase 4: Task 3

If I had more time to work on the project, I would refactor the Recipe and RecipeCollection classes by introducing a Writable interface in the persistence package. This interface would define a toJson method, ensuring consistency across all model classes that need JSON serialization. By implementing Writable, both Recipe and RecipeCollection would follow a standardized approach to converting objects to JSON, improving code maintainability and readability. This refactoring would also enhance extensibility, allowing future classes requiring JSON serialization to implement Writable easily. Additionally, it reinforces the principle of separation of concerns by keeping persistence-related functionality clearly defined, rather than scattering serialization logic throughout multiple classes. Overall, this change would make the design more structured, reusable, and easier to extend in the future.

Reflecting on the design presented in the UML class diagram, one potential improvement would be to refine the role of RecipeAppCaller. Since this class already manages interactions between RecipeAppGUI and RecipeCollection, RecipeAppGUI should not directly modify the model. Instead, all logic related to modifying recipes, loading data, and updating the application state should be fully encapsulated within RecipeAppCaller. This would strengthen the separation of concerns, reduce coupling between the GUI and model, and improve the overall maintainability of the codebase.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages