Kitchen Helper - User Guide

By: Team CS2113T-M16-2 Since: March 2020 License: MIT

1. Introduction

Our Project, Kitchen Helper is a kitchen application that is designed to facilitate users to track their kitchen inventory effectively. Kitchen Helper enables users to create recipes with different ingredients and allows auto deduction when you cook using the recipe. Kitchen Helper provides prompts when your ingredient are expiring or its quantity is running low. It also prompts for chores that should be completed by a deadline. Additionally, KitchenHelper helps users track expenditure.

Kitchen Helper is optimised for those who prefer working with Command Line Interface (CLI). It increases the level of convenience in our busy lives, so give this application a chance to help you!

This user guide aims to help you learn your way around our application, making the learning process smooth and effortless. So what are you waiting for? Let’s go!

2. Quick Start

  1. Ensure that you have Java 11 or above installed on your computer.
  2. Download the latest version of KitchenHelper from here.
  3. Save the file as kitchenhelper.jar and copy the file to the folder you want to use as the home folder for KitchenHelper.
  4. Type the command java -jar kitchenhelper.jar in the command prompt to start the application.
  5. Type the command in the command box and press Enter to execute it.
    e.g. typing help and pressing Enter will display help information.
  6. Some example commands you can try:
    • help : lists all commands
    • addingredient /n Beef cubes /c meat /q 3 /p 20 /e 18/03/2020 : adds an ingredient to the list.
    • listingredient meat : list the ingredients that has the category meat.
    • exit : exits the application.
  7. Refer to Section 3, “Features” for details of each command.

3. Features

Command Format:

3.1. General Commands

3.1.1. Viewing help: help

Shows a list of available commands and their usages.

Format: help
↑ Return to Top

3.1.2. Exiting the Program: exit

Exits the program.

Format: exit
↑ Return to Top

3.1.3. Resetting the application: reset

You can reset the application which will wipe out all existing data

Format: reset
↑ Return to Top

3.2. Storage

3.2.1. Select Load Files (Zi Hui)

At the start of Kitchen Helper, the user will be prompted with the option to either load the program data normally or from the most recent backup storage files.

The normal mode will load Kitchen Helper from the main storage files which store the data from the last used session of the user.

Alternatively, if the user selects the restore mode, it will load Kitchen Helper from the backup storage files which store the version of data manually saved from the user’s last usage of the save command Section 3.2.2, “Save Current State”. The restore mode gives users access to the backup storage files, however, users will have to use the save command to update the backup storage files.

It is important to note that any subsequent changes made to the program data during the current session will be automatically saved into the main storage files regardless of initial load options.

Example Outcome
Command:
1

Description:
Data loaded from the most recent main storage files.
Please enter ‘1’ to load data from normal mode or ‘2’ to load data from restore mode:
1
===================================================
Okay data have been loaded from the main storage files.
===================================================
Command:
2

Description:
Data loaded from the most recent backup storage files.
Please enter ‘1’ to load data from normal mode or ‘2’ to load data from restore mode:
2
===================================================
Okay data have been loaded from the backup storage files.
===================================================

↑ Return to Top

3.2.2. Save Current State: save (Zi Hui)

At any point of the session, if the user wishes to store a backup copy of the current state of their program data, it is recommended that the user uses the save command. The save command will store all program data of the current state into the backup storage files.

Format: save

Example Outcome
Command:
save

Description:
Data saved into backup storage files.

You have saved the current state in the following files: outputIngredientCopy.txt, outputRecipeCopy.txt, outputChoreCopy.txt
===================================================

↑ Return to Top

3.3. Ingredient

3.3.1. Adding an ingredient: addingredient (Jin Fa)

You can add an ingredient to the Kitchen Helper for tracking, containing various details.

Format: addingredient /n <INGREDIENT_NAME> /c <CATEGORY> /q <QUANTITY> /p <PRICE> /e <EXPIRY>

Any CATEGORY that does not falls in the list would be put under Miscellaneous.

Notable Behavior:

Situation Example Outcome
Ingredient with same name, price and expiry does not exist in the Kitchen Helper. Command:
addingredient /n Beef cubes /c meat /q 3 /p 20 /e 18/03/2022

Description:
Creates a new ingredient called Beef cubes, which have the following attributes: Category meat, Quantity 3, Price 20 , Expiry date 18/03/2022.
KitchenHelper has added: Ingredient:Beef cubes Category:meat Quantity:3 Price:$20.00 Expiry:18/03/2022
===================================================
Ingredient with same name, price and expiry exists in the Kitchen Helper. Command:
addingredient /n Beef cubes /c meat /q 4 /p 20 /e 18/03/2022

Description:
Creates a new ingredient called Beef cubes, which have the following attributes: Category meat, Quantity 4, Price 20 , Expiry date 18/03/2022.
Kitchen Helper has updated the quantity of Beef cubes to 7 from 3
===================================================
Ingredient entered with an expired expiry date. Command:
addingredient /n Milo /c Drink /q 30 /p 10 /e 20/03/2020

Description:
Creates a new ingredient called Milo, which have the following attributes: Category Drink, Quantity 30, Price 10 , Expiry date 20/03/2020.
Expired ingredient detected in input.
Please enter a non-expired expiry date.
===================================================

↑ Return to Top

3.3.2. List ingredient: listingredient (Jin Xing)

Displays all the items currently in the ingredient list in Kitchen Helper.

Format: listingredient <CATEGORY / ALL>

Example Outcome
Command:
listingredient all

Description:
Displays all ingredients from all categories.
listingredient all
Here is the list of Ingredients in Inventory
Format : Ingredient Name / Quantity / Price / Expiry
All:
dairy:
drink:
fruit:
meat:
Beef / 30 / 20.2 / 20/02/2020
miscellaneous:
staple:
vegetable:
kailan / 30 / 30.45 / 12/03/2020

===================================================
Command:
listingredient meat

Description:
Displays all ingredients from meat categories.
listingredient all
Here is the list of Ingredients in Inventory
Format : Ingredient Name / Quantity / Price / Expiry
Beef / 30 / 20.2 / 20/02/2020

===================================================

↑ Return to Top

3.3.3. Delete an ingredient: deleteingredient (Isabella and Yan Ting)

You can delete a specific ingredient and reduce the quantity of an ingredient from the ingredient’s inventory in Kitchen Helper by using the ingredient’s index.
You will be prompted whether to delete ingredient cost from total expenditure, in the event you are deleting this ingredient because you added it wrongly and would not like to count its cost into total expenditure.
If you refuse this prompt, you will then be prompted whether to add ingredient cost to amount used in cooking, in the event you are manually deleting ingredients you have cooked or consumed.

Format: deleteingredient /i <INGREDIENT_INDEX> [/q <QUANTITY>]

You may get the index for the ingredient that you would like to delete by getting the full list of ingredients that you have previously entered into Kitchen Helper or search for an ingredient. You may refer to the listingredient and searchingredient command sections to understand how to use the command.

One thing to note: If the final quantity of your ingredient will be zero after deduction, the ingredient will be deleted from the ingredient list subsequently.

Your user expenditure might change depending on your response to the prompts. You can view the changes with the displayexpenditure command. Please refer to 3.6.1. Display User Expenditure. (Isabella)

Example Outcome
Command:
deleteingredient /i 1

Description: Deletes the item specified by index 1 in the ingredient list.
The amount of money spent on this ingredient has already been recorded.
Would you like to remove the amount spent on this item from the total expenditure?
===================================================
yes
Ok! $3.00 is deducted from total expenditure.
===================================================
apple has been deleted.
===================================================
Command:
deleteingredient /i 2 /q 20

Description: Reduces the ingredient specified by index 2 in the ingredient list.
The amount of money spent on this ingredient has already been recorded.
Would you like to remove the amount spent on this item from the total expenditure?
===================================================
no
Ok! There are no changes to expenditure.
===================================================
Would you like to add the amount spent on this item to the amount used for cooking or consumption?
===================================================
yes
Ok! $50.00 is added to amount used in cooking or consumption.
===================================================
The quantity of HL Milk has been changed!
===================================================
Command:
deleteingredient /i 2 /q 1

Description: Assuming that the current ingredient of index 2 has a quantity of 1, reduces the ingredient specified by index 2 in the ingredient list.
The amount of money spent on this ingredient has already been recorded.
Would you like to remove the amount spent on this item from the total expenditure?
===================================================
no
Ok! There are no changes to expenditure.
===================================================
Would you like to add the amount spent on this item to the amount used for cooking or consumption?
===================================================
no
Ok! There are no changes to expenditure.
===================================================
The quantity of Beef has been changed!
This ingredient has a quantity of 0 after deduction, so it has been deleted.
===================================================

↑ Return to Top

3.3.4. Search for ingredient: searchingredient (Jin Fa)

You can search for ingredients based on a given keyword.

The output also returns Location: Index <Number>, which you can make use of the Number to delete an ingredient or change the quantity of an ingredient.
You may refer to Section 3.3.3. Delete an ingredient command section to understand how to use the command.

Format: searchingredient <KEYWORD>

Example Outcome
Command:
searchingredient beef
Description:
Search by ingredient’s category.
Here are your matching ingredients in your list
1.[Meat] Beef cubes Qty:7 $20.00 Exp:18/03/2022 [Location: Index 1]
===================================================
Command:
searchingredient meat
Description:
Search by ingredient’s category.
Here are your matching ingredients in your list
1.[Meat] Beef cubes Qty:7 $20.00 Exp:18/03/2022 [Location: Index 1]
===================================================
Command :
searchingredient 18/03/2022
Description:
Search by ingredient’s category.
Here are your matching ingredients in your list
1.[Meat] Beef cubes Qty:7 $20.00 Exp:18/03/2022 [Location: Index 1]
===================================================

↑ Return to Top

3.4. Recipe

3.4.1. Adding a recipe: addrecipe (Hui Zhen)

You can add a new unique recipe into the List in Kitchen Helper. A recipe is a list of ingredients that are used to cook a dish.

Format: addrecipe /n <RECIPE_NAME> /i <INGREDIENT_NAME>:<QUANTITY>:<CATEGORY>[,..]

The different types of CATEGORY are listed below:

Any CATEGORY that does not falls in the list could be put under Miscellaneous.

All RECIPE_NAME has to be unique. You can check the list of existing recipes by using listrecipe all

Please note that RECIPE_NAME and INGREDIENT_NAME can contain spaces. These will not be removed after addition. (i.e. “Chicken____Stew” where _ is space will remain )

Example Outcome
Command:
addrecipe /n Rice Ball /i Rice:3:staple

Description:
Creates a new recipe called Rice Ball which contains one ingredient, 3 portions of Rice.
Rice Ball Recipe has been created with 1 ingredients inside.
===================================================.
Command :
addrecipe /n Chicken Salad /i Chicken Breast:2:meat, Lettuce:4:vegetable

Description:
Creates a new recipe called Chicken Salad which contains two ingredient, 2 portions of Chicken breast and 4 portions of Lettuce.
Chicken Salad Recipe has been created with 2 ingredients inside.
===================================================
Command:
addrecipe /n Chicken Salad /i Chicken Breast:2:meat, Lettuce:4:vegetable

Description:
A duplicate recipe has been found
There is an existing recipe with the same name!
===================================================

↑ Return to Top

3.4.2. List recipes: listrecipe (Jin Xing)

Displays all recipe and its name or the items currently in a particular recipe in Kitchen Helper.

Format: listrecipe <ITEM_NUMBER / ALL>

Example Outcome
Command:
listrecipe all

Description:
Displays all recipe number and name from RecipeList.
listrecipe all
Here is the list of Recipe:

Format:Recipe Number / Recipe Name
1/Chicken Salad
2/Chicken Stew
===================================================
Command:
listrecipe 1

Description:
Displays all ingredients used in recipe 1.
listingredient 1
Here is the list of Ingredients in Recipe:

Format:Ingredient Name/Ingredient Category/Quantity/Price/Expiry
Recipe Name:Chicken Salad
milo/drink/10/0.0/null

===================================================

↑ Return to Top

3.4.3. Delete a recipe: deleterecipe (Yan Ting)

You can delete a recipe by using the recipe name or index from the list in Kitchen Helper. The name or index of the recipe can be found by displaying the list of recipes.

Format: deleterecipe /n <RECIPE_NAME> OR deleterecipe /i <RECIPE_INDEX>

You may get the index or name for the recipe that you would like to delete by getting the full list of recipes that you have previously entered into Kitchen Helper. You may refer to the listrecipe all command section to understand how to use the command.

Example Outcome
Command:
deleterecipe /n pasta

Description:
Deletes the recipe with the name of pasta from the recipe list.
pasta has been deleted.
===================================================
Command:
deleterecipe /i 2

Description:
Deletes recipe by index. In this case, delete recipe with the index 2 from the recipe list.
Beef Salad has been deleted.
===================================================

↑ Return to Top

3.4.4. Search for recipe: searchrecipe (Jin Fa)

You can search for recipes based on a given keyword.

The output also returns Location: Index <Number>, which you can make use of the Number to view information in the recipe or delete a recipe through an index.
You may refer to Section 3.4.2. List recipes and Section 3.4.3. Delete a recipe command section to understand how to use the command.

Format: searchrecipe <KEYWORD>

Example Outcome
Command:
searchrecipe Chicken Salad

Description:
Search by recipe’s name.
Here are your matching recipes in your list
1.Chicken Salad [Location: Index 1]
===================================================

↑ Return to Top

3.4.5. Cooking a recipe: cookrecipe (Hui Zhen and Yan Ting)

You can cook a specified recipe by the recipe’s name.

Format: cookrecipe /n <RECIPE_NAME> /p <NUMBER_OF_PAX>

Please note that you cannot cook expired ingredients and will be prompted to clear them.

Please note that the ingredients used in the recipe will be matched strictly by their INGREDIENT_NAME and CATEGORY when cooking a recipe. You may refer to the addrecipe command section

Please note that if the recipe has been successfully cooked, the quantity of the ingredients associated to the recipe will be deducted. If the final quantity of some of the ingredients is zero after deduction, the respective ingredients will be removed from the ingredient list.

The ingredients used in the specified recipe will be automatically deducted when there is sufficient non-expired ingredients.

Situation Example Outcome
Sufficient ingredients for all ingredients required in the specified recipe. Command:
cookrecipe /n chicken salad /p 2

Description:
Cooks the recipe Chicken Salad for 2 people
Kitchen Helper is trying to cook!
Cooks the ‘chicken salad’ recipe with a pax 2.
===================================================
Insufficient ingredients for all ingredients required in the specified recipe regardless if the ingredients have expired or not. Command:
cookrecipe /n Chicken Salad /p 3

Description:
Cooks the recipe Chicken Salad for 3 people
Kitchen Helper is trying to cook!
There are insufficient/missing ingredients!
===================================================
Insufficient non-expired ingredients available. Command:
cookrecipe /n warm milk /p 2

Description:
Cooks the recipe warm milk for 2 people
Kitchen Helper is trying to cook!
There are insufficient/missing ingredients!
Please check for these expired ingredients: hl milk
===================================================

↑ Return to Top

3.5. Chore

3.5.1. Add a chore: addchore (Isabella)

You can add a chore to the chore list in Kitchen Helper.

Format: addchore <TASK_DESCRIPTION> /by <DEADLINE> OR addchore <TASK_DESCRIPTION> /by <dd/MM/yyyy HH:mm>

Please note that the deadline has to be specified exactly like the given format for it to be considered a Date object, otherwise it would be considered as a String. The deadline specified as a String has no content or format restrictions.
Please note that the expiry date used in addchore given in the User Guide may be outdated.

Example Outcome
Command:
addchore buy groceries /by Monday 12pm

Description:
Creates a new chore called buy groceries which contains the deadline Monday 12pm.
You have added this chore:
[x] buy groceries (by: Monday 12pm)
Now you have 1 chore in the list.
===================================================
Command:
addchore buy groceries /by 20/04/2020 12:00

Description:
Creates a new chore called buy groceries which contains the deadline 20/04/2020 12:00.
You have added this chore:
[x] buy groceries (by: 20/04/2020 12:00)
Now you have 2 chores in the list.
===================================================

↑ Return to Top

3.5.2. List chore: listchore (Isabella)

You can display all the items currently in the chore list in Kitchen Helper.

Format: listchore

Example Outcome
Command:
listchore
Here are the chores in your list:
1. [x] buy groceries (by: Monday 12pm)
2. [x] buy groceries (by: 20/04/2020 12:00)
===================================================

↑ Return to Top

3.5.3. Delete a chore: deletechore (Isabella)

You can delete the chore specified by the index in the chore list in Kitchen Helper. You can display the list of chores to find the index of the chore.

Format: deletechore <INDEX_TO_DELETE>

Example Outcome
Command:
deletechore 1

Description:
Deletes the item specified by index 1 in the chore list.
You have deleted this chore:
[x] buy groceries (by: Monday 12pm)
Now you have 1 chore in the list.
===================================================

↑ Return to Top

3.5.4. Search for chore: searchchore (Jin Fa)

You can search for chores based on a given keyword.

The output also returns Location: Index <Number>, which you can make use of the Number to delete a chore or mark a chore as completed.
You may refer to Section 3.5.3. Delete a chore and Section 3.5.5 Mark chore as done command section to understand how to use the command.

Format: searchchore <KEYWORD>

Example Outcome
Command:
searchchore groceries

Description:
Search by chore’s description.
Here are your matching chores in your list
1.[x] buy groceries (by: Monday 12pm) [Location: Index 1]
===================================================
Command:
searchchore Monday

Description:
Search by chore’s description.
Here are your matching chores in your list
1.[x] buy groceries (by: Monday 12pm) [Location: Index 1]
===================================================

↑ Return to Top

3.5.5. Mark chore as done: done (Isabella)

You can mark the chore specified by the index in the chore list in Kitchen Helper as done. You can display the list of chores to find the index of the chore.

Format: done <INDEX_TO_CHECK>

Example Outcome
Command:
done 1

Description:
Marks the item specified by index 1 in the chore list as done.
You have completed this chore:
[/] buy groceries (by: 20/04/2020 12:00)

===================================================

↑ Return to Top

3.6. Expenditure

3.6.1. Display User Expenditure: displayexpenditure (Isabella)

You can display the total expenditure and amount used in cooking for the week to help you gauge future expenditure on ingredients.

Format: displayexpenditure

Example Outcome
Command:
displayexpenditure
This is the total amount you spent on buying Ingredients so far this week: $140.00
This is the amount you actually spent for Ingredients used in your cooking this week: $60.00
===================================================

↑ Return to Top

4. Command Summary

Here is a short summary of the command used in KitchenHelper application.
Refer back to Section 3, “Features” for more information on the usage of commands.

General Commands

Feature Command
help help
exit exit
reset reset

Ingredient Commands

Feature Command
addingredient addingredient /n <INGREDIENT_NAME> /c <CATEGORY> /q <QUANTITY> /p <PRICE> /e <EXPIRY>
e.g. addingredient /n Beef cubes /c meat /q 3 /p 20 /e 18/03/2022
listingredient listingredient <CATEGORY / ALL>
e.g. listingredient all OR listingredient meat
deleteingredient deleteingredient /i <ingredient_index> [/q <QUANTITY>]
e.g. deleteingredient /i 1
searchingredient searchingredient <KEYWORD>
e.g. searchingredient beef

Recipe Commands

Feature Command
addrecipe addrecipe /n <RECIPE_NAME> /i <INGREDIENT_NAME>:<QUANTITY>:<CATEGORY>[,..]
e.g. addrecipe /n Rice Ball /i Rice:3:staple
listrecipe listrecipe <ITEM_NUMBER / ALL>
e.g. listrecipe all OR listrecipe 1
deleterecipe deleterecipe /n <RECIPE_NAME> OR deleterecipe /i <RECIPE_INDEX>
e.g. deleterecipe /n pasta OR deleterecipe /i 2
searchrecipe searchrecipe <KEYWORD>
e.g. searchrecipe Chicken Salad
cookrecipe cookrecipe /n <RECIPE_NAME> /p <NUMBER_OF_PAX>
e.g. cookrecipe /n chicken salad /p 2

Chore Commands

Feature Command
addchore addchore <TASK_DESCRIPTION> /by <DEADLINE>
e.g. addchore buy groceries /by Monday 12pm
listchore listchore
e.g. listchore
deletechore deletechore <INDEX_TO_DELETE>
e.g. deletechore 1
searchchore searchchore <KEYWORD>
e.g. searchchore groceries
done done <INDEX_TO_CHECK>
e.g. done 1

Storage Commands

Feature Command
save current state save

Expenditure Commands

Feature Command
displayexpenditure displayexpenditure

↑ Return to Top