Ryan Aidan's Project Portfolio Page
Project: McKitchen
McKitchen (My-CLI-Kitchen) is a desktop application that can quickly store, edit, and search for recipes by running a single command, ideal for the fast typists, home cooks, and students who want a simple way to store or search for simple recipes to cook. The user interacts with it using a CLI-like interface, and it has a GUI created with JavaFX. It is written in Java and has about 8k LoC.
Given below are my contributions to the project.
- New Feature: Added the ability to add new recipes.
- What it does: allows the user to add new recipes to the application. Recipes require details such as the recipe name, completion time (in minutes), serving size (no. of portions), ingredients (name and quantity required), steps and lastly tags (optional).
- Justification: This feature improves the product significantly because users can add their own recipes to the application to view or refer to in the future.
- Highlights: This enhancement required the use of individual classes for each attribute of the recipe as well as individual
Prefixto parse and handle each attribute.
- New Feature: Added the ability to edit existing recipes.
- What it does: allows the user to edit existing recipes in the application. At least one of the recipe attributes must be updated/edited for the edit command to be successful.
- Justification: This feature improves the product significantly because users can change/update existing recipes in the application instead of having to delete and re-add the recipe with the updated attributes all over again.
- Highlights: This enhancement required the use of individual classes for each attribute of the recipe as well as individual
Prefixto parse and handle each attribute. TheEditRecipeDescriptorwas also required to copy each updated value provided by the user over to the existing recipe.
- New Feature: Access (
edit,view,delete) recipe by index and name.- What it does: Allows the above-mentioned features to work by specifying either the index of the recipe in the current list view with the
-xflag or by specifying the name of the recipe. - Justification: Improve user-experience by alleviating the issue of long commands by allowing users to specify either
-x <recipe number from list>or<recipe name>so that users would have the optionality of running command either by its name or index. - Highlights: This enhancement requires the command parser to determine if the user used a recipe index with
-xor if a recipe name was used. The parser would then have to obtain the specified recipe based on the index or name specified before one of the above-mentioned features can continue running.
- What it does: Allows the above-mentioned features to work by specifying either the index of the recipe in the current list view with the
- New Feature: Add multiple values within a single
Prefixusing|as a delimiter.- What it does: Allows users to add multiple values for each attribute within a single
Prefix. - Justification: Improve user-experience by alleviating the issue of long commands by allowing users to specify multiple values of an attribute within a single
Prefixinstead of having to enter thePrefixfor every value that the user wants to add to an attribute (e.g. having to enterPrefixfor every ingredient of a recipe). - Highlights: This enhancement upgrades the
ArgumentMultiMapclass and splits all argument values found for eachPrefixwith the specified delimiter ( which in this case is|) and adds them to the attribute specified.
- What it does: Allows users to add multiple values for each attribute within a single
-
Code contributed: Click here to see the code that I’ve contributed on RepoSense.
- Enhancements to existing features:
- Designed a user-friendly UI with a coherent and relevant color scheme, fonts and layout for the McKitchen application using Figma.
- Wrote tests for existing
Editcommand andEditCommandParserto increase coverage to 69.91% (Pull request #156) - Wrote tests for existing
Addcommand andAddCommandParserto increase coverage to 74.03% (Pull request #126) - Bug fixes for integer overflow (Pull request #237)
- Bug fixes for invalid prefixes (Pull request #239)
- Bug fixes to allow storing of
Ingredientclass attributes to json file (Pull request #60)
- Documentation:
- Community: