Kitchen Helper - User Guide
By: Team CS2113T-M16-2
Since: March 2020
License: MIT
- User Guide
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
- Ensure that you have Java
11
or above installed on your computer. - Download the latest version of
KitchenHelper
from here. - Save the file as
kitchenhelper.jar
and copy the file to the folder you want to use as the home folder for KitchenHelper. - Type the command
java -jar kitchenhelper.jar
in the command prompt to start the application. - Type the command in the command box and press
Enter
to execute it.
e.g. typinghelp
and pressingEnter
will display help information. - Some example commands you can try:
help
: lists all commandsaddingredient /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 categorymeat
.exit
: exits the application.
- Refer to Section 3, “Features” for details of each command.
3. Features
Command Format:
- Words that are enclosed by angle brackets are the parameters to be supplied by the user. E.g.
deleterecipe /n <RECIPE_NAME>
From this example,RECIPE_NAME
will be inputted by the user. - Items in square brackets with the word [] are optional. E.g.
deleteingredient /n <INGREDIENT_NAME> [/q QUANTITY]
can be used asdeleteingredient /n apple or deleteingredient /n name /q 2
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. =================================================== |
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 =================================================== |
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>
INGREDIENT_NAME
is the name of your ingredient.INGREDIENT NAME
can only consists of alphabet letters only.
CATEGORY
is the category of your ingredient.
The different types ofCATEGORY
are listed below:Meat
Vegetable
Staple
Fruit
Dairy
Drink
Miscellaneous
Any CATEGORY
that does not falls in the list would be put under Miscellaneous
.
QUANTITY
is the number of servings of the ingredient.QUANTITY
in the format of whole number.
PRICE
is the unit cost of a single quantity for ingredient.PRICE
can be given up to 2 decimal places.
EXPIRY
is the expiry date of the ingredient.EXPIRY
in the format of dd/MM/yyyy e.g. 01/12/2020.- Note: System will automatically flag ingredient as expired if expiry date is same as the current date.
Notable Behavior:
- If you add an ingredient with the same name (case-insensitive), same price and same expiry data, Kitchen Helper will increase the quantity from the existing data.
- The expiry date used in
addingredient
given in theUser Guide
may be outdated.
Please ensure that you input a valid date of the ingredient that is not expired. Otherwise, you may encounter problem adding ingredient toKitchen Helper
.
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. =================================================== |
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 =================================================== |
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>]
INGREDIENT_INDEX
: This refers to the index of the ingredient which is an identification number tagged to the ingredient.QUANTITY
: This refers to the quantity of ingredient to be deducted. This is an optional argument.
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. =================================================== |
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>
KEYWORD
is the word to search for ingredient in Kitchen Helper.
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] =================================================== |
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>[,..]
RECIPE_NAME
is the name of your recipe.INGREDIENT_NAME
is the name of your ingredient.QUANTITY
number of servings of the ingredient.CATEGORY
is the CATEGORY of your ingredient.
The different types of CATEGORY
are listed below:
Meat
Vegetable
Staple
Fruit
Dairy
Drink
Miscellaneous
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 usinglistrecipe all
Please note that
RECIPE_NAME
andINGREDIENT_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! =================================================== |
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 =================================================== |
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>
RECIPE_NAME
: This refers to the name of the recipe.RECIPE_INDEX
: This refers to the index of the recipe which is an identification number tagged to the recipe.
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. =================================================== |
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>
KEYWORD
is the word to search for recipe’s name in Kitchen Helper.
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] =================================================== |
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>
RECIPE_NAME
is the name of your recipe.NUMBER_OF_PAX
is the pax count for the specified recipe.
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
andCATEGORY
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 ingredient
s used in the specified recipe will be automatically deducted when there is sufficient non-expired ingredient
s.
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 =================================================== |
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>
TASK_DESCRIPTION
: This refers to the description of the chore to complete.DEADLINE
: This refers to the deadline you specified in String.dd/MM/yyyy HH:mm
: This refers to the deadline as a date object that has to be specified in this exact format.
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 inaddchore
given in theUser 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. =================================================== |
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) =================================================== |
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>
INDEX_TO_DELETE
: This refers to the index of the chore in the chorelist 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. =================================================== |
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>
KEYWORD
is the word to search for chores in Kitchen Helper.
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] =================================================== |
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>
INDEX_TO_CHECK
: This refers to the index of the chore in the chorelist to mark as done.
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) =================================================== |
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.
- Total expenditure increases whenever you execute the
addingredient
command to simulate purchase of groceries. You may refer to 3.3.1. Adding an ingredient. - Amount used in cooking is the cost of all the ingredients you managed to use for cooking and represents the amount of expenditure you benefited from.
Amount used in cooking increases when you execute thecookrecipe
command or when you respond withyes
to the corresponding prompt when executingdeleteingredient
. You may refer to 3.4.5. Cooking a recipe and Section 3.3.3. Delete an ingredient.
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 =================================================== |
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 |