By: Team W10-4
Since: SEP 2018
Licence: MIT
- 1. Introduction
- 2. Quick Start
- 3. Features
- 3.1. Universal Commands
- 3.2. Recipes Commands (Only applicable in recipe context)
- 3.3. Ingredient Manager Commands (Only applicable in ingredient context)
- 3.4. Favourite Recipe Commands (Only applicable in favourites context)
- 3.5. Ingredient-Recipe Query Commands (Only applicable in cross context)
- 3.6. Meal Planner Commands (Only applicable in meal planner context)
- 3.7. Health Plan Commands (Only applicable in health plan context)
- 3.8. Cook-Mode Commands [coming in V2.0]
- 4. FAQ
- 5. Command Summary
Souschef is your smart cooking sidekick, offering personalised guidance every step of the way. From recipe recommendations just for you, to meal planning and inventory management, Sous Chef has everything you need to improve life in the kitchen. The application works with a Command Line Interface (CLI) for speedy provision of recipe choices, management of your cooking plan while guiding you through the preparation process. With a few commands, this kitchen helper will be there to keep cooking as simple as ABC. Get started with Section 2, “Quick Start” and experience the fun from cooking meals.
-
Ensure you have Java version
9
or later installed in your Computer. -
Download the latest
souschef.jar
here. -
Copy the file to the folder you want to use as the home folder.
-
Double-click the file to start the app. The GUI should appear in a few seconds.
-
Type the command in the command box and press Enter to execute it.
e.g. typing-help
and pressing Enter will open the help window. -
Some example commands you can try:
-
find KEYWORD…
: search for recipes related and excluded from the keywords (only within recipe context) -
-mealplanner
: Switch to meal planner context and display personal meal schedule -
-exit
: exits the app
-
-
Refer to Section 3, “Features” for details of each command.
In Sous Chef, there are 2 types of command: universal commands and context-unique commands.
The universal commands can be used throughout the application and perform application-wide action. You can identify a
universal command from its "-" convention followed by a keyword (e.g. -exit).
The context-unique commands on the other hand are only valid for that context. (e.g. Section 3.2, “Recipes Commands (Only applicable in recipe context)” can only be
used in -recipe context). These commands contains only a action key word followed by the required parameters, if any. (e.g. select INDEX)
Command Format Convention
-
Words in
UPPER_CASE
are the parameters to be supplied by the user e.g. inadd n/NAME c/COOKTIME d/DIFFICULTY [t/TAG]
,NAME
,COOKTIME
andDIFFICULTY
andTAG
are parameters are to be replaced:add n/Fried Chicken d/2 c/20M t/Fastfood
. -
Items in square brackets are optional (i.e. can be omitted).
-
Items with
…
after them can be used multiple times e.g.[t/TAG]…
can be used 1 or more:t/Japanese
,t/Halal t/Seafood
etc. With[]
it can also be omitted totally too.
Switch to recipe context and display recipes.
See Section 3.2, “Recipes Commands (Only applicable in recipe context)” to view commands for recipe context.
Format:
-recipe
Switch to ingredient manager context and display ingredient manager, which helps stock
tracking of ingredient that the user currently have.
See Section 3.3, “Ingredient Manager Commands (Only applicable in ingredient context)” to view commands for ingredient manager
context.
Format:
-ingredient
Switch to favourites context and display favourites list, which keeps a list of all
the users' favourite recipes.
See Section 3.4, “Favourite Recipe Commands (Only applicable in favourites context)” to view commands for favourites context.
Format:
-favourite
Switch to ingredient-recipe query context and where you can sort, filter the recipe list by name of ingredients
included and get information of needed amounts of ingredients.
See Section 3.5, “Ingredient-Recipe Query Commands (Only applicable in cross context)” to view commands for ingredient-recipe
query context.
Format:
-cross
Switch to meal planner context and display the planned meals for breakfast, lunch and dinner for previously planned days.
See Section 3.6, “Meal Planner Commands (Only applicable in meal planner context)” to view commands for meal planner context.
Format:
-mealplanner
Switch to health plan context and display health plan set by the user and the days added into the plan which is tied
to meal plans.
See Section 3.7, “Health Plan Commands (Only applicable in health plan context)” to view commands for health plan context.
Format:
-healthplan
Add new recipe.
Format:
add n/NAME c/COOKTIME d/DIFFICULTY [t/TAG]…
cont i/INSTRUCTION… [c/COOKTIME]
cont…
end
INSTRUCTION:
TEXT… [#INGREDIENT_NAME AMOUNT SERVING_UNIT]…
ℹ️
|
Full set of commands |
-
This is a multi-line command. (i.e.
add
,cont
andend
must be in a seperate command entry) -
Command starts with
add
and should include name, cook time and difficulty. Tags can be added as required.-
NAME should come with any alphanumeric characters.
-
COOKTIME should have a integer value each with a postfix of H/M/S. A mixture of up to 2 postfixes are allowed i.e. H & M or M & S. Valid examples: 1H15M, 30M20S, 35M.
-
DIFFICULTY should range from 1 to 5.
-
TAG should come with any alphanumberic character.
-
-
Subsequence lines must start with
cont
and should only include details on one instructional step each.-
Details to be included are instruction text, instruction exclusive cook time (optional) and ingredients (optional).
-
Instruction will be saved in the same sequence as it is inputted.
-
Ingredients can be embedded into instruction text via
#INGREDIENT_NAME AMOUNT SERVING_UNIT
.-
Compound INGREDIENT_NAME is acceptable. e.g. Bleached Wheat Flour.
-
AMOUNT accepts both integer and decimal. Decimal must come with a leading 0 for values less than 1. e.g. 0.25
-
SERVING_UNIT should be single-worded. e.g. gram, g, ml.
-
-
-
User can perform other commands and continue adding instructions as required.
cont
command need not be continuous. -
To overwrite existing recipe that has yet been added (i.e.
end
command not used), simply use theadd
command and enter a new recipe details as desired. -
The
end
command record and save the recipe.
ℹ️
|
Recipes containing the same name, difficulty and cooktime are considered as duplicates and is not be allowed. |
Examples:
-
add n/Chicken Rice d/2 c/45M
cont i/Clean and cut #chicken 1.2 kg.
cont i/Put the chicken in #boiled water 900 ml for 10 mins. c/10M
cont i/Remove the chicken and put #soy sauce 100 ml.
cont i/Cook for another 20 mins. c/20M
end
Edit new recipe.
Format:
edit INDEX [n/NAME] [c/COOKTIME] [d/DIFFICULTY] [t/TAG]…
or
edit INDEX s/STEP i/INSTRUCTION [c/COOKTIME]
INSTRUCTION:
TEXT… [#INGREDIENT_NAME AMOUNT SERVING_UNIT]…
-
Attributes included are to be edited on a replacement basis (not concatenation e.g. tags are being replaced and not added)
-
INDEX should be the index number of the recipe displayed.
-
There are 2 types of edit command.
-
First: Used to edit recipe generic information namely name, cook time, difficulty and tags.
-
NAME should come with any alphanumeric characters.
-
COOKTIME should have a integer value each with a postfix of H/M/S. A mixture of up to 2 postfixes are allowed i.e. H & M or M & S. Valid examples: 1H15M, 30M20S, 35M.
-
DIFFICULTY should range from 1 to 5.
-
TAG should come with any alphanumberic character.
-
-
Second: Used to edit/add a single instruction of/to that recipe.
-
STEP refers to the instruction number of the recipe. It should be existing instruction to replace the instruction or a number higher than highest existing STEP to add. (e.g. 6 existing instruction steps, use
s/7
to add instead of replace) -
INSTRUCTION must be included and should come with any alphanumeric characters. Ingredients can be added using
#INGREDIENT_NAME AMOUNT SERVING_UNIT
as required. -
COOKTIME should have a integer value each with a postfix of H/M/S. A mixture of up to 2 postfixes are allowed i.e. H & M or M & S. Valid examples: 1H15M, 30M20S, 35M.
-
-
Examples:
-
edit 1 c/20M t/Asian t/Staple
-
edit 1 s/2 i/Pour #water 300 ml into the mix.
View a recipe and its details from the list.
Format:
select INDEX
-
INDEX should be the index number of the recipe displayed.
-
All serving unit will be converted (approximately) to our common serving unit "gram" for display.
Show 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 a recipe and its details from the list.
Format:
delete INDEX
-
INDEX should be the index number of the recipe displayed.
A cook mode that provides step-by-step guidance to aid real-time cooking.
Format:
cook INDEX
-
INDEX should be the index number of the recipe displayed.
Add a recipe to their favourites list.
Format:
favourite INDEX
-
INDEX should be the index number of the recipe displayed.
Displays a random recipe for the user. If you cannot make up your mind,
why not key this in for a surprise?
Format:
surprise
==== Add to meal plan: plan
Add a specified recipe to meal plan.
Format:
plan INDEX DATE MEAL
-
INDEX should be the index number of the recipe displayed.
-
DATE should be entered in the format yyyy-mm-dd.
-
MEAL can be specified with the following keywords: breakfast, lunch, dinner.
Adds an ingredient to the ingredient manager.
Format:
add NAME AMOUNT SERVING_UNIT DATE
-
For compound word, ‘_’ is used to separate words.
-
Serving units are pre-defined in the serving unit dictionary. Those undefined in the dictionary are not available.
-
Currently available serving units are gram(g), kilogram(kg), pinch, piece, whole, clove, cm3, ml, l, tablespoon, teaspoon and cup.
-
Amounts are converted with common serving unit(e.g. gram).
-
Format for date should be MONTH-DAY-YEAR.
-
Date is meant to be the date of input, but it is up to user to tweak its usage. For example, it can be used to show expiry date.
-
It is not allowed to add ingredients with same name and same date. To add in more amount, edit function should be used instead.
Shows a list of ingredients in ingredient manager. Ingredients are sorted by date, so that the ingredients with
earlier date
are placed high in order.
Format:
list
Edit an existing ingredient in ingredient manager.
Format:
edit INDEX FIELD_NAME NEW_VALUE [MORE FIELD_NAME NEW_VALUE]…
-
Field name is either name, amount, or date.
-
Restrictions for respective field’s input are same as in add command(3.3.1.).
Find ingredients in ingredient manager whose name contains any of the given keywords.
Format:
find KEYWORD [MORE_KEYWORDS]…
-
Only the name is searched.
-
Match by full words.
Delete ingredient in ingredient manager according to its index in the last shown list.
Format:
delete INDEX
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.
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 in favourites according to its index in the last shown list.
Format:
delete INDEX
By default, the page show the recipe list that is same with the recipe list shown in recipe context at the point of
initiation of the
application. User can
filter or sort the recipes
based on ingredients contained in recipes. Also, needed amounts of ingredients are calculated by considering the number
of
serving units and ingredients stored in ingredient manager, so
that
user can take a look by applying select command later.
Format:
view NUMBER_OF_SERVINGS [include [inventory] KEYWORD [MORE_KEYWORDS]…] [prioritize [inventory] KEYWORD
[MORE_KEYWORDS]…]
-
Number of servings can be a floating point value.
-
Names of ingredients are used as keywords. If the keyword is a compound word, '_' is used to separate between the words. (For example, spring_onion)
-
"include" keyword filters the list, only leaving the recipes that includes all of following ingredients in the list.
-
"prioritize" keyword sorts the recipes based on number of the following ingredients contained. Recipes containing the most number of following ingredients would be placed high in order.
-
"include" part and "prioritize" part is optional. It is possible that only one of either part is provided. (For example, "view 1 prioritize onion") If both are not provided(For example, "view 4"), recipe list remains the same and only the number of servings are considered for calculation of needed amounts ingredients.
-
"inventory" keyword provides all the ingredients in Ingredient Manager as parameter to the keyword it follows.
-
It is not allowed to provide same ingredient as a parameter for both "include" and "prioritize" part. This is also applicable for "inventory" parameter becasues it is also a set of ingredients.
For a recipe in the list shown as a result of above command(3.4.1.), user can view amounts of respective ingredient
in the recipe
that
needs to be additionally prepared. It reflects number of serving units and
refers to Ingredient Manager to get the amount of ingredients the user currently have.
Format:
select INDEX
-
Amounts of necessary ingredients are calculated based on the information in Ingredient Manager.
e.g. If positive, (Number of Servings × Total Amount of an ingredient for a Recipe - Amount of an ingredient stored in ingredient manager). Otherwise, 0.
-
DATE should be entered in the format yyyy-mm-dd
-
MEAL can be specified with the following keywords: breakfast, lunch, dinner
After displaying the meal planner, deletes the specified day.
Format: delete INDEX
Clears all the meal slots of the meal planner.
Format: clear
Selects and views the details of a recipe at a specified meal slot of a specified day.
Format: select INDEX MEAL
Adds a health plan under the user.
Required parameters are NAME, AGE, CURRENT HEIGHT, CURRENT WEIGHT,
TARGET WEIGHT, AND DURATION
Format:
add n/NAME a/AGE h/HEIGHT w/CURRENT_WEIGHT t/TARGET_WEIGHT d/DURATION
-
Height is numeric and input is of centimetre units
-
Current weight is numeric and input is of Kilogram units
-
Target Weight is numeric and input is of Kilogram units
-
AGE must be numeric
-
DURATION specifies an integer input of time in days desired by user to achieve said GOAL, has to be numeric and more than 0
After listing the list of health plans by user.
Deletes the plan selected by user.
Format:
delete INDEX
-
INDEX has to be numeric and more than 0
After listing the list of health plans by User.
Prompts for edit on the plan selected by the user.
Format :
edit INDEX [n/NAME] [a/AGE] [t/TARGET_WEIGHT] [h/HEIGHT] [w/CURRENT_WEIGHT] [d/DURATION]
-
INDEX specifies the entry to edit, has to be numeric and more than 0
-
Height is numeric, be more than 0 and input is of centimetre units
-
Current weight is numeric, be more than 0 and input is of Kilogram units
-
Target Weight is numeric, be more than 0 and input is of Kilogram units
-
AGE must be numeric and more than 0
-
DURATION specifies an integer input of time in days desired by user to achieve said GOAL, has to be numeric and more than 0
After being shown the meal planner list by the system
User selects to add to intake List
Format:
addDay p/PLAN_INDEX d/DAY_INDEX
-
Plan Index specifies the plan to add to, has to be more than 0 and be a valid index on the list
-
Day index specifies the day to add into the specified plan, has to be more than 0 and be a valid index on the list
After being shown the list of days from intake list
User selects day to remove and also the plan to remove from
Format:
deleteDay p/PLAN_INDEX d/DAY_INDEX
-
Plan Index specifies the plan to delete from, has to be more than 0 and be a valid index on the list
-
Day index specifies the day to delete from the specified plan, has to be more than 0 and be a valid index on the list
User enters command to view the full list of meals beside the health plan list
Format:
showMeal
User enters command to hide any view that is currently displayed on the right
Format:
hideMeal
After shown the list of health plans by the system
User enters command to see the details of the plan specified
Format:
showDetails INDEX
-
INDEX is the target plan to view details, needs to be numeric more than 0 and be a valid index found on the list
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Souschef folder.
Universal Commands
-
View help:
-help
-
View history:
-history
-
Switch to recipe context:
-recipe
-
Switch to ingredient manager context:
-ingredient
-
Switch to ingredient-recipe query context:
-cross
-
Switch to meal planner context:
-mealplanner
-
Switch to health plan context:
-healthplan
-
Exit application:
-exit
Recipes Commands (Only applicable in recipe context)
-
List recipes:
list
-
Add a recipe:
add n/NAME c/COOKTIME d/DIFFICULTY [t/TAG]…
cont i/INSTRUCTION [c/COOKTIME]
cont…
end-
INSTRUCTION:
[TEXT]… [#INGREDIENT_NAME AMOUNT SERVING_UNIT]…
-
-
Edit a recipe:
edit INDEX [n/NAME] [c/COOKTIME] [d/DIFFICULTY] [t/TAG]…
or
edit INDEX s/STEP i/INSTRUCTION [c/COOKTIME]
-
INSTRUCTION:
TEXT… [#INGREDIENT_NAME AMOUNT SERVING_UNIT]…
-
-
Display recipe details:
select INDEX
-
Search recipes:
find KEYWORD…
-
Delete recipe details:
delete INDEX
-
Activate cook-mode [coming in V2.0]:
cook INDEX
-
Add recipe to favourite:
favourite
-
Add to meal plan:
plan INDEX DATE MEAL
-
Add to review [Coming in V2.0]:
review [COMMENT] RATING
Ingredient Manager Commands (Only applicable in ingredient context)
-
Add an ingredient:
add NAME AMOUNT SERVING_UNIT DATE
-
Sort and list all ingredients:
list
-
Edit ingredient info:
edit INDEX FIELD_NAME NEW_INFO [MORE FIELD_NAME NEW_INFO]…
-
Find ingredient:
find KEYWORD [MORE_KEYWORDS]…
-
Delete ingredient:
delete INDEX
-
Clear all ingredients:
clear
Recipe-Ingredient Query Commands (Only applicable in cross context)
-
View Recipe based on Ingredients:
view NUMBER_OF_SERVINGS [include [inventory] KEYWORD [MORE_KEYWORDS]…] [prioritize [inventory] KEYWORD [MORE_KEYWORDS]…]
-
View needed amount of ingredients for a Recipe:
select INDEX
-
List all recipes and undo calculation:
list
Meal Planner Commands (Only applicable in meal planner context)
-
Delete day:
delete INDEX
-
Clear planner:
clear
-
View recipe details:
select INDEX MEAL
-
Find recipe by date:
find DATE
-
List all recipes:
list
Health Plan Commands
-
Add health plan:
add n/NAME a/AGE h/HEIGHT w/CURRENT_WEIGHT t/TARGET_WEIGHT d/DURATION
-
Delete health plan
delete INDEX
-
Edit health plan:
edit INDEX [n/NAME] [a/AGE] [t/TARGET_WEIGHT] [h/HEIGHT] [w/CURRENT_WEIGHT] [d/DURATION]
-
Show all current meals planned in system:
showMeal
-
Hide panels on the right:
hideMeal
-
Show details of a health plan:
showDetails INDEX
-
Add a day from meal planner into a health plan:
addDay p/PLAN_INDEX d/DAY_INDEX
-
Remove a day from the list of meals in health plan:
deleteDay p/PLAN_INDEX d/DAY_INDEX
Cook-Mode Commands [coming in V2.0]
-
Next Instruction: Hit Enter key
-
Previous Instruction:
b
-
Start timer:
s
-
Pause timer:
p
-
Reset timer:
r
-
End cook-mode:
end