User Guide
Are you an avid chef with an overwhelming collection of delicious recipes? Or perhaps you just want a convenient way to store, access and share your recipes easily?
We understand that for brilliant and creative individuals like yourself, it is essential to properly manage your recipes, which is why RIZZipe is designed and built just for chefs like YOU to organize your recipes at the touch of a finger!
Using this Guide
- If you want to run RIZZipe for the first time, check out our handy Quick Start guide.
- If you want to learn how to use RIZZipe, refer to our Commands section for a detailed guide on how to run each command.
- For experienced developers interested in our design decisions, please refer to our Developer Guide.
- For experienced users, you may refer to the Command summary and Keyboard shortcuts summary for a summarised table of all the commands and keyboard shortcuts available.
Table of Contents
- Using this Guide
- Table of Contents
- Overview
- Quick Start
- 
Commands    - How to interpret the command format
- Attributes
- Adding a recipe: add
- Adding a recipe through form: addf
- Listing all recipes: list
- Editing a recipe: edit
- Finding a recipe by name: find
- Deleting a recipe: delete
- Searching for substitutions for an ingredient: sub
- Asking for assistance: help
- Clearing the recipe book: clear
- Exiting the program: exit
 
- Managing the Data
- FAQ
- Command summary
- Keyboard shortcuts summary
Overview
The following subsections detail the functionality of RIZZipe and explain the various terminology and colour coding we will be using in this guide.
What is RIZZipe?
RIZZipe is a command-based recipe database that operates primarily on commands and behaves like a Command Line Interface (CLI).
RIZZipe comes equipped with numerous features, but we particularly love these three:
- Versatile tagging and powerful search function
- Recipe sharing
- Ingredient substitution searching
Give RIZZipe a try and utilise its many features to achieve your culinary rizz today!
Common colour codes in this guide
This is used to display  tips to enhance your experience using RIZZipe!
 tips to enhance your experience using RIZZipe!
This is used to display  additional information that you may find useful!
 additional information that you may find useful!
 keyboard shortcuts that can help make your journey using RIZZipe more smooth sailing!
 keyboard shortcuts that can help make your journey using RIZZipe more smooth sailing!
 warnings for you to heed in order for RIZZipe to work as intended!
 warnings for you to heed in order for RIZZipe to work as intended!
Glossary
- 
Command terminal: A terminal is a text input and output environment. It is a program that acts as a wrapper and allows us to enter commands that the computer processes. Open your terminal by:
    - Searching and opening Command Prompton Windows
- Searching and opening Terminalon Mac
 
- Searching and opening 
- 
cd: Command to change directory
- Command Line Interface (CLI): A text-based user interface (UI) used to run programs, manage computer files and interact with the computer
- JSON: JSON is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects
Quick Start
Let’s get you rizzed up in the fastest way possible!
- Ensure you have Java 11or above installed in your computer.
- Download the latest rizzipe.jarhere
- Copy the file to the folder you want to use as the home folder for RIZZipe.
- Open a command terminal, cdinto the folder you put the jar file in, and input thejava -jar rizzipe.jarcommand to run the application.
- A GUI similar to the below should appear in a few seconds. Note that our experienced chefs have already crafted
some sample recipes for you!
  
 
- Navigate through the main window easily using just your keyboard! Toggle between recipes simply by using the ↑ Up and ↓ Down arrow keys!
- Type commands within the command line interface (CLI) and press Enter to execute it. For a list of executable commands, refer to the Commands Section.
- Some of the previously mentioned executable commands may have keyboard shortcuts to make your life easier! Refer to each command within the Commands Section, or take a look at the Keyboard Shortcuts summary to learn more about how to use them!
Commands
RIZZipe is a command-driven application, which means its various features and functionalities can be accessed by executing various commands.
How to interpret the command format
 Notes about the command format:
 Notes about the command format:
- 
      The first word is the type of command you are running. 
 i.e. for the inputdelete 5, we are running thedeletecommand.
- 
      We use prefixes such as n/to label our arguments for the command.
- 
      Words in UPPER_CASEare the parameters to be supplied by you.
 i.e. inadd n/RECIPE_NAME,RECIPE_NAMEis a parameter which can be used asadd Grilled Salmon.
- 
      Parameters in square brackets []refer to optional parameters that can be omitted. i.e.n/RECIPE_NAME [d/RECIPE_DURATION]can be used asn/Cheese Sandwich d/10 minutesorn/Cheese Sandwich.
- 
      Parameters with ...behind them can be used multiple times, including 0. i.e.[t/TAGS]...can be used as<nothing>(zero times),t/HALAL,t/HALAL t/BREAKFASTetc.
- 
      Parameters can be in any order i.e. if a command specifies n/RECIPE_NAME d/RECIPE_DURATION, thend/RECIPE_DURATION n/RECIPE_NAMEis also acceptable.
- 
      Excess parameters for commands that do not take in parameters (such as help,list,exitandclear) will be ignored.
 e.g. if the command specifieshelp 123, it will be interpreted ashelp.
 Tip:
 Tip:
For better readability, we have included an optional multi-line command format for commands that may require multiple inputs (add, edit). After each input, you can include a line break by simply entering a backslash \ to move on to the next line to continue writing the next part of your command input! Note that you will not have to delete the backslash that appears before continuing to type!
Attributes
What is a recipe?
Recipes are the building blocks of RIZZipe! Each recipe consists of multiple attributes, which are listed in the recipe attributes table.
Pay close attention to these attributes, for they are crucial inputs to some of our commands mentioned below!
Recipe attributes table
| Field | Prefix | Accepted Format | Compulsory? | Example | 
|---|---|---|---|---|
| Name | n/ | NAMENAMEcan contain these characters:A-Z a-z 0-9 - \ ' " and space. | Yes | Chicken Rice,Broccoli Stir-Fry | 
| Duration | d/ | DURATION UNITDURATIONis a positive integer, decimal number, or fractionUNITcan contain these characters:A-Z a-z and space | No | 3 hours,30.5 minutes,2/5 Time Intervals | 
| Portion | p/ | AMOUNT UNITorAMOUNT "-" or "to" AMOUNT UNITAMOUNTis a positive integerUNITcan contain these characters:A-Z a-z and space | No | 1 person,3-5 people,4 to 6 hungry individuals | 
| Ingredients | i/ | -n INGREDIENT_NAME [-a INGREDIENT_AMOUNT] [-e ESTIMATED_AMOUNT] [-cn COMMON_NAME] [-r REMARKS]...[-s SUBSTITUTION]... | No | Refer to the “Ingredients” section below! | 
| Steps | s/ | STEPSTEPconsists of 2 or more space-separated words, and can contain these characters:A-Z a-z 0-9 . , : ; ( ) - and space | No | Serve well.,Bring 3 quarts water to a boil in a 5-qt. pot.,Season with salt; add pasta and cook, stirring occasionally. | 
| Tags | t/ | TAGTAGcan contain these characters:A-Z a-z 0-9 and space | No | Italian,Comfort Food,Gluten Free | 
What is an ingredient?
Ingredients are at the heart of recipes, and also comprise multiple attributes. The specification for recipe ingredients are listed in the table below:
Ingredient attributes table
| Field | Prefix | Accepted Format | Compulsory? | Example | 
|---|---|---|---|---|
| Name | -n | INGREDIENT_NAMEINGREDIENT_NAMEcan contain these characters:A-Z a-z - and space | Yes | Salt,Soy Sauce,Barley-Wheat Bread | 
| Amount | -a | AMOUNT UNITAMOUNTis a positive integer, decimal number, fraction, “a”, or “one”UNITcan contain these characters:A-Z a-z and space | No | a pinch of,one pint,3 fl oz,4.5 grams,2/3 cup | 
| Estimated Amount | -e | ESTIMATED_AMOUNTNo restrictions on ESTIMATED_AMOUNT | No | Around 3 tablespoons | 
| Common Name | -cn | COMMON_NAMECOMMON_NAMEcan contain these characters:A-Z a-z - and space | No | Eggplant,Saiyote | 
| Remarks | -r | REMARKREMARKcan contain these characters:A-Z a-z and space | No | Optional,Diced,thinly sliced | 
| Substitutions | -s | SUBSTITUTIONSUBSTITUTIONcan contain these characters:A-Z a-z - and space | No | Seaweed Flakes,Capsicum | 
Adding a recipe: add
Come up with a new innovative recipe and afraid that you’ll forget about it in the future,
or just want to share it with your friends? Simply run the add command, and follow the prompts to save different
information about your recipe such as ingredients and steps!
Format: add n/RECIPE_NAME [d/RECIPE_DURATION] [p/RECIPE_PORTION] [t/RECIPE_TAGS]... [i/-n INGREDIENT_NAME [-a INGREDIENT_AMOUNT] [-e ESTIMATED AMOUNT] [-cn COMMON NAME] [-r REMARKS]... [-s SUBSTITUTION]...]... [s/RECIPE_STEPS]...
Example(s) of usage:
- 
add n/Honey Chicken Rice
  
 
- add n/Chicken Noodles d/20 minutes p/1-2 people i/-n chicken thigh -a 300 g i/-n noodles i/-n soy sauce -a 2 tablespoons -s salt
- add n/Peanut Butter Sandwich t/breakfast s/Prepare bread and spread s/Using a knife, spread 2-3 scoops of peanut butter s/Serve and enjoy.
 Additional information:
 Additional information:
- 
      A recipe can have any number of steps, tags and ingredients (including 0)! 
- 
      It is only compulsory to include the recipe name when you first add the recipe into recipe book! 
- 
      Although optional, we do however suggest adding in the other fields if possible for your own future reference. 
- 
      If you have multiple inputs for tags, steps or ingredients, treat each input as a separate field (i.e. s/Step1 s/step2).
- 
      Similar to parameters, ingredient fields do not have to be input in order ( -acan come before-netc.).
- 
      However, for steps, please input the steps in the order that they are intended to be performed. 
 Tip:
 Tip:
When adding an ingredient, it is only compulsory to include the ingredient name. However, you can also add in additional details such as amount (RECOMMENDED) and substitutions etc.!
Adding a recipe through form: addf
Want to add a delicious new recipe but don’t want to type the whole long string of inputs at one go? Use our interactive form feature to add your favorite recipe to the recipe book today!
Format: 
addf
 Additional information:
 Additional information:
- An empty pop-up form as shown in the image below will appear!

- 
      Tab to move on to the next input field, and shift+tab to go to the previous field! 
- 
      A new row automatically pops up when you reach the last row for ingredients and steps. Once you’re done just click to the next field! 
- 
      Note that multiple tags can be added with commas separators. (e.g. Vegetarian, Halal)
- 
      Click on Save to add your recipe to the recipe book! 
Listing all recipes: list
Ever forget how many recipes you have in your storage? Want to view ‘em all? Or
simply want to pick a recipe at random? Just run the list command!
Format:
list
 Additional information:
 Additional information:
- 
      Lists all recipes that are in the storage, in the chronological order they were added. 
- 
      Depending on the size of the window, the user may add multiple columns to display more recipes. 
- 
      In order to zoom in on a particular recipe in the list, user can double-click on the corresponding recipe. 
 Tip:
 Tip:
The list command can be used to reset the most recently searched list to the full recipe list after performing a find command!
 Keyboard Shortcut:
 Keyboard Shortcut:To navigate the list, you can use the ↑ Up and ↓ Down arrow keys (as previously mentioned in the QuickStart). While the recipe you want to zoom in on is selected, simply press P to view that particular recipe’s details!
Editing a recipe: edit
Made a mistake or just omitted some important details when you first stored your recipe in the recipe book? 
Don’t fret, for the edit command is here for you to supplement these new details to increase the rizz on your recipes!
Format: 
edit INDEX [n/RECIPE_NAME] [d/RECIPE_DURATION] [p/RECIPE_PORTION] [t/RECIPE_TAGS]...  [i/-n INGREDIENT_NAME [-a INGREDIENT_AMOUNT] [-e ESTIMATED AMOUNT] [-cn COMMON NAME] [-r REMARKS]... [-s SUBSTITUTION]...]... [s/RECIPE_STEPS]...
 Additional information:
 Additional information:
- 
      Edits the recipe at the specified index. The index refers to the index number shown in the displayed recipe list. 
- 
      The index must be a positive integer 1,2,3,… 
- 
      All existing values will be updated to the new input values! 
- 
      When editing tags, ingredients and steps, all the existing values for these fields will be removed (i.e. adding of tags, ingredients and steps is not cumulative!) 
- 
      You can remove the optional fields (all fields except for name) by simply typing the prefix without specifying any details after it (i.e. typing i/removes all ingredients)
 Tips:
 Tips:
- 
      Alternatively, you can use the edit popup form to edit recipes (see below). 
- 
      Note that the tags specified in the fields above still apply for ingredients, like -n.
 Keyboard shortcut:
 Keyboard shortcut:As an alternative to typing the full command, we provide a popup form to edit a recipe! While the recipe you want to edit is being selected, simply press F to display the popup form for that particular recipe!

Finding a recipe by name: find
Have a certain recipe at the back of your mind that you want to refer to? Or want to look up all recipes associated with a specific tag or those containing a specific ingredient that you’re desperate to clear but have no idea what to pair it with?
find helps to save your time scrolling through your whole list of recipes by displaying
only those that match any of your specified keywords straight away!
Format:
find [PROPERTY] KEYWORD [ADDITIONAL KEYWORDS]...
Supported properties: name, tag and ingredient
i.e. find name KEYWORD [ADDITIONAL KEYWORDS]..., find tag KEYWORD [ADDITIONAL KEYWORDS]..., find ingredient KEYWORD [ADDITIONAL KEYWORDS]...
Example(s) of usage:
- 
find cheesereturns all recipes with the keywordcheesein their recipe name
- 
find name pancakes sandwichreturns all recipes with the keywordpancakesand/orsandwichin their names

- 
find tag westernreturns all recipes with the tagwestern
- 
find ingredient tofureturns all recipes with the ingredienttofu
 Additional information:
 Additional information:
- 
      Adding a property behind findis optional, and if no property is specified,finddefaults to filtering byname.
- 
      All keyword queries are case-insensitive. e.g. chickenwill matchChicken
- 
      Recipes matching at least one keyword will be returned, e.g. searching sandwich frieswill match recipes namedcheese friesandham sandwich
- 
      Recipes are listed in the chronological order that they were added. 
- 
      The order of the keywords does not matter. e.g. ham sandwichwill match a recipe namedsandwich ham
- 
      Only complete words will be matched. e.g. chickwill not matchchicken
Deleting a recipe: delete
No longer like a certain recipe? Simply delete it from the database by its index!
Format:
delete INDEX
Example(s) of usage:
- 
listfollowed bydelete 2deletes the 2nd item stored in the recipe book.
- 
find chicken, followed bydelete 1will delete the 1st recipe in the displayed results of the find command.
 Additional information:
 Additional information:
- 
      Deletes the dish at the specified INDEXof the current list that is displayed.
- 
      The index must be a positive integer 1, 2, 3, … 
 Keyboard shortcut:
 Keyboard shortcut:While the recipe you want to delete is selected, simply press the Delete or Backspace key and click on confirm to delete that particular recipe!
Searching for substitutions for an ingredient: sub
Short of a particular condiment or ingredient to complete your favourite recipe? Have no fear, for the sub command
provides you with a hassle-free way to solve your problem by suggesting some common substitutions so that you can complete your
dish with an alternative ingredient!
Format:
sub INGREDIENT_NAME
Example(s) of usage:
- 
sub chickenreturns a list of suggested substitutions for the ingredientchicken
 Additional information:
 Additional information:
- 
      subsearches across your stored recipes and a preloaded suggested substitutions list to provide you with the most accurate and extensive list of substitutions!
- 
      The search is case-insensitive, i.e. sub saltwill return all stored substitutions forSaltandsaltacross recipes.
- 
      Only full words will be matched i.e. sub chickwill not return stored substitutes forchicken
- 
      For inputs with multiple words, it will only match stored ingredients with the same full multi-word input (case-insensitive) i.e. sub golden syrupdoes not return substitutes forsyrup
- 
      The returned list of ingredients returned will not contain any duplicates. 
 Tip:
 Tip:
Adding a substitution together with an ingredient is recommended since it will boost the number of substitutions listed when that ingredient is queried in the future!
Asking for assistance: help
Unsure or unable to remember our list of commands and how to format your inputs? Fret not, as simply inputting
help will save you from your woes!
Format:
help
 Additional information:
 Additional information:
- 
helplinks to this user guide, which is a quick way to refresh your memory on any command that might have slipped your mind!
   
Clearing the recipe book: clear
Want to change things up and start a new recipe book afresh? Simply run the clear command to wipe the memory
and start afresh!
Format:
clear
 Caution:
Running
 Caution:
Running clear will clear your entire recipe book and there’s no going back!
 Tip:
 Tip:
If you wish to save your data elsewhere first and then start afresh, consider using the Export feature first!
Exiting the program: exit
Done with cooking for the day?
Running exit exits the program and closes the window!
Format:
exit
 Tip:
 Tip:
Wondering if you have to save your data before exiting? Don’t worry, RIZZipe automatically saves your data whenever a command is executed, so any changes to your recipes will be saved immediately!
Managing the Data
Saving the data
Recipe data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Recipe data is saved as a JSON file in the following directory:
(Location where your Recipe Book JAR File `rizzipe.jar` is)
├── data
│   └── recipebook.json <== Your saved recipe JSON file
├── preferences.json
└── rizzipe.jar
For advanced users, you can change the default location which the recipebook data file is saved to. This can be done by creating a preferences.json file in the base directory where the app is stored, and specifying userPrefsFilePath in preferences.json with the desired file path.
Editing the data file
Advanced users are welcome to update data directly by editing that data file located at the address above.
 Caution:
If your changes to the data file result in an invalid format, RIZZipe will discard all data and start with an empty data file at the next run.
 Caution:
If your changes to the data file result in an invalid format, RIZZipe will discard all data and start with an empty data file at the next run.
Importing data
Pressing F3 will open an import window from the main window (as shown in the image below). From there, select the JSON file to be imported using the selector.

 Additional information:
 Additional information:
- Only files with recipes that pass our formatting checks, and files with no duplicate recipes will be imported
- Any imported recipes will be added to your current recipe book!
 Tip:
 Tip:
Alternatively, you can access the import function from the File tab in the top left corner of the main window.

Exporting data
The keyboard input F4 will open an export window from the main window (as shown in the image below). From there, input the file name of the JSON file to be exported and select the desired location for it to be saved!

 Tip:
 Tip:
Alternatively, like the import function, you can access the export function via the File tab in the top left corner of the main window.
FAQ
Q: How do I transfer my data to another computer?
A: Export the current recipe book with our Export function and send the JSON file to the other computer. On the other computer, run RIZZipe and use the Import function to import all previously saved recipe files!
Command summary
| Action | Format, Examples | 
|---|---|
| Add | add n/RECIPE_NAME [d/RECIPE_DURATION] [p/RECIPE_PORTION] [t/RECIPE_TAGS]...  [i/-n INGREDIENT_NAME [-a INGREDIENT_AMOUNT] [-e ESTIMATED AMOUNT] [-cn COMMON NAME] [-r REMARKS]... [-s SUBSTITUTION]...]... [s/RECIPE_STEPS]...e.g. add n/Chicken Noodles d/20 minutes p/1-2 people i/-n chicken thigh -a 300 g i/-n noodles i/-n soy sauce -a 2 tablespoons -s salt | 
| List | list | 
| Edit | edit INDEX [n/RECIPE_NAME] [d/RECIPE_DURATION] [p/RECIPE_PORTION] [t/RECIPE_TAGS]...  [i/-n INGREDIENT_NAME [-a INGREDIENT_AMOUNT] [-e ESTIMATED AMOUNT] [-cn COMMON NAME] [-r REMARKS]... [-s SUBSTITUTION]...]... [s/RECIPE_STEPS]...e.g. edit 2 n/Duck Rice p/1 person | 
| Find | find [PROPERTY] KEYWORD [ADDITIONAL KEYWORDS]...    Valid properties: name,tag,ingrediente.g. find cheese rice,find name popcorn,find tag western,find ingredient tofu | 
| Delete | delete INDEXe.g. delete 2 | 
| Sub | sub INGREDIENT_NAMEe.g. sub salt | 
| Clear | clear | 
| Help | help | 
| Exit | exit | 
Keyboard shortcuts summary
| Shortcut | Functionality | 
|---|---|
| ↑ Up and ↓ Down arrow keys in Main Window | Navigate through different recipes | 
| \ while inputting a long command | Provide line break for increased readability | 
| P while a recipe is selected | Open recipe details of selected recipe | 
| F while a recipe is selected | Open edit recipe form to edit the selected recipe | 
| Delete/Backspace while a recipe is selected | Delete the selected recipe (requires confirmation) | 
| F3 while in Main Window | Import a recipe book | 
| F4 while in Main Window | Export the current recipe book |