PROJECT: Souschef


Overview

Souschef is a desktop smart cooking sidekick, offering personalised guidance every step of the way. From recipe recommendations just for you, to meal planning and inventory management, SousChef has everything you need to improve life in the kitchen.

Our users interact via CLI and GUI created with JavaFX. Written in Java, experience what many are enjoying.

Summary of contributions

  • Code contributed: [Functional code]

  • Major enhancement: added favourites feature.

    • What it does: allows the user to save their favourite recipes to a separate list.

    • Justification: This feature improves the product significantly because a user can have quick access to all of their favourite recipes

    • Highlights: This enhancement was originally unsupported by the AB4 code; it is a completely new component feature.

  • Code contributed: https://github.com/CS2103-AY1819S1-W10-4/main/pull/255

  • Minor enhancement: added a surprise command that surprises the user with a random recipe.

  • Code contributed: https://github.com/CS2103-AY1819S1-W10-4/main/pull/181

  • Other contributions:

    • Documentation:

      • Documented and explained implementation of favourites.

      • Documented and explained how to use favourites and surprise in user guide.

    • Community:

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Explanation of Surprise command

Surprise: surprise

Displays a random recipe for the user. If you cannot make up your mind, why not key this in for a surprise?
Format:
surprise

Explanation of Favourite command

Add recipe to favourite: favourite

Add a recipe to their favourites list.
Format:
favourite INDEX

  • INDEX should be the index number of the recipe displayed.

Favourite Recipe Commands (Only applicable in favourites context)

List favourite recipes: list

Show all favourite recipes.
Format:
list

Display favourite recipe details: select

View a favourite recipe and its details from the list.
Format:
select INDEX

  • INDEX should be as displayed in the list.

  • All serving unit will be converted (approximately) to our common serving unit "gram" for display.

Find favourite recipe: find

Show favourite recipes related to the keyword(s). Keywords include but not limited to cuisines (Indian, Japanese), dietary types (Vegetarian, Halal), ingredients (egg, broccoli), preparation time (30M, 1H40M) and difficulty (1, 2, …​, 5).
Format:
find KEYWORD…​

  • KEYWORD is case insensitive.

  • The order of keywords does not matter.

Examples:

  • find rice asian 3

  • find korean kimchi staple

Delete favourite recipe: delete

Delete favourite recipe in favourites according to its index in the last shown list.
Format:
delete INDEX

Clear all favourite recipes: clear

Clears all favourite recipes in favourites.
Format:
clear

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

Favourites list

This feature allows users to have a quick reference to all of their favourite recipes. Users are able to add recipes that they like a lot, or that they cook often to the favourites list. Users are also able to search, display details, and remove any entry within the favourites list.

Model

The model is simply a UniqueList of Recipes.

Logic

To access favourite context commands, context has to be switched to "Favourites" via the command -favourite. From there, the Favourite commands can be used and AppContentParser will redirect the different commands to their respective CommandParsers.favourite command for adding recipes to the Favourites list is done in recipe context.

Adding to Favourites

While browsing the recipes in the recipe context, and when a user likes a recipe at a particular INDEX, they can execute the favourite INDEX command. The recipe selected would be copied from the recipe model, and added to an array list in the favourites model.

Selecting a Favourite Recipe

While browsing the favourite recipes in the favourite context, if the user wishes to view the details of the recipe, they can execute the select INDEX command. From the array list in the favourites model, the 1 based index will be accessed, and its details will be displayed in the panel.

Finding a Favourite Recipe

The user can also browse and search favourite recipes by tag. Similar implementation as 'find' command in recipe context.

Deleting a Favourites Recipe

While browsing the recipes in the recipe context, and when a user wants to remove a recipe at a particular INDEX, they can execute the delete INDEX command. From the array list in the favourites model, the index will be accessed, and the recipe will be deleted form the favourites model.

Clearing Favourites

The clear command clears the Favourites List of all Recipes.
The command replaces the existing UniqueList of favouriteModel with a new empty UniqueList.