Project: McKitchen

McKitchen (My-CLI-Kitchen) is a desktop application that can quickly store, edit, and search for recipes by running a single command. This is ideal for the fast typists, amateur cooks, busy students or executives 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.

Listed below are my contributions to the project with majority of the credits given to AB-3 as it served as a strong foundation for our application.

  • New Model: Added the skeleton code for what classes in McKitchen are going to be based and improved on.
    • As our application is morphing AB-3, we had to modify some base files to suit our needs, and I took charge of updating the files in model/.
  • New Parser: Update AB3’s Parser class for our own needs.
    • As we modified the files in model/, we also had to modify how user inputs were parsed and checked for validity.
  • New Feature: Update the Find feature to find a Recipe based on the inputs given.
    • What it does: Allows users to search for a recipe that contains any of the keywords given.
    • Justification: This features improves the user experience of our users by enabling them to search for recipes based on what ingredient they have on hand or feel like eating.
    • Highlights: This enhancement requires all recipes to be searchable as it should match the recipe’s name, ingredient, or tag. I implemented this by creating SearchSet which represents a recipe into its keywords, making it easy to search and match.
  • New Feature: Access (edit, view, delete) recipe by index.
    • What it does: Allows the above-mentioned features to work by specifying the index of the recipe in the current list view.
    • Justification: Improve user-experience by alleviating the issue of long commands by allowing users to specify -x <recipe number from list> so that users would not have to type the full name of a recipe.
    • Highlights: This enhancement requires a new Prefix to denote that the data after it is an Index. I then had to add a new method to get a recipe based on its index and update the affected commands.
  • Modifications to existing features:
    • Update Exit, Help, and List to work as how we intended for it to from AB-3’s to McKitchen.
    • Achieved 100% code coverage for files in: model/*, FindCommand, and FindCommandParser, along with other files.
  • Code contributed: Click here to see the code that I’ve contributed on RepoSense.

  • Project management:
    • Managed releases v1.3 - v1.4.1 (4 releases) on GitHub
    • Planned and organised weekly meetings as a way to keep the team updated with each other’s work and update them on what needs to be done for the week.
    • Aggregated issues to improve code coverage and address issues found by other testers
  • Documentation:
    • User Guide:
      • Update the flow and formatting of the User Guide,
      • Ensured that it was more user-centric and friendly,
      • Added tips to features to help users understand how to best use certain features and included tips for advanced users
      • Assisted the other members with writing the features they had implemented.
    • Developer Guide:
      • Update the flow and formatting of the Developer Guide
      • Assisted with the creation of UML diagrams for the Developer Guide
      • Update the undo/redo future feature to fit our need
      • Include enhancement to find as a future feature and explain its implementation
  • Community: