Project: McGymmy

McGymmy is a desktop app for Software Engineers who need help managing their diet, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). This project has about 10 kLoC.

Given below are my contributions to the project:

  • Code contributed: RepoSense link

  • New Feature: Create the food model.
    • What it does: this is the food item that McGymmy keeps track of
    • Justification:
    • Highlights: It is important that this feature must be bug-free, otherwise it could cause subtle bugs in other parts of the code base, such as the one mentioned in this pull request
  • New Feature: Added the date property for food.
    • What it does: allows user to add date for the food item
    • Justification: This enhancement includes updating the UI so that it shows date property, and updating the storage to store date
    • Highlights: This date property can accept inputs in various formats
    • Credits: The idea of implementing this is taken from this StackOverflow’s post
  • New Feature: Added the ability to undo previous commands.
    • What it does: allows the user to undo all previous commands one at a time.
    • Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them. The process of implementing this feature is difficult and time-consuming, as it includes testing if it interacts correctly with all existing components. This process help me found a bug relating to mutable Tag set in Food and fix it
    • Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
  • New Feature: Allowed finding food by tag. #82
    • What it does: allows user to categorize food by tag
    • Justification: I found that user can add tag to food item, but there is no meaningful usage of them beside viewing. Therefore I decided to make find command to work with tag, so that users can use tag as a way to categorize their food.
  • Enhancement:
    • Tweaked AB3’s UniquePersonList to become a Fridge class that allows duplicate foods.
    • Added tests for codes written by my teammates to minimize the possibility of getting bugs: #70, #69
  • Project management:
    • Enabled assertion on Java CI #109
  • Documentation:
    • User Guide:
      • Added documentation for the undo feature #131
      • Updated the existing commands to include date, and add an appendix to show supported date formats #91
    • Developer Guide:
      • Document the undo feature in the DG, including updated all the diagrams inside that section
      • Updated the user profile, value proposition, and user stories #17
      • Updated the glossary #150, #41
      • Update storage class diagram #100
  • Community: