Project: McGymmy

This portfolio aims to document the contributions that I have made to the McGymmy project. McGymmy can be found here.

Overview

McGymmy is a desktop diet tracking application to provide a simple an easy way for users to track their diet. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. Given below are my contributions to the project.

Code contributions

  • New Feature: Added the ability to tag and untag food items. #65
    • What it does: allows the user to tag and untag food items as and when they need to.
    • Highlights: This update will add additional functionality to the find command as it is able to search for Tags as well.
  • New Feature: Added the ability to import #87 and export files #94.
    • What it does: allows the user to import and export McGymmy save files both in CLI and GUI.
    • Justification: This feature improves the product significantly because a user can transfer their data to other instances of McGymmy without going through the hassle of manually copying and pasting the files. A GUI is provided so that users who do not remember their file structure can browse through their system to find the directory they want.
    • Highlights: This enhancement supports future updates to food items if more attributes are to be added.
    • Credits: JavaFX Library and Documentation
  • New Feature: Did pair programming with Sean to add a PieChart with summary values along with the labels for total calories. #80
    • What it does: The PieChart shows the percentage and weight of the different MacroNutrients as well as the total calories consumed
    • Justification: The Visualisation of the data allows the user to get a rough idea how much he had consumed, compared to just staring at numbers. It also provides more visual impact to the user and give them a sense of progress.
    • Highlights: The animations of the PieChart was buggy and does not work as expected. As such we disabled the animation.
    • Credits: JavaFx Library and Documentation
  • Code contributed: Commits, RepoSense

Other Contributions

  • Project management:
    • Managed releases v1.3 trial, v1.3 and v1.4 (3 releases) on GitHub
  • Enhancements to existing features:
    • Refactoring: Did pair programming with Kamil to refactor the code in AB3 to McGymmy
      • What it does: Combine the functionality of the food classes together with the code of AB3 and rename packages to fit into the McGymmy context.
      • Justification: allows everyone on the team to have a clear interface where they can interact with other packages more effectively. It also changes the package name to McGymmy from AddressBook3
    • Refactoring: Did pair programming with Joey to refactor the IllegalArgumentException to IllegalValueException.
      • What it does: This helps us quickly identify where the exceptions were uncaught as Java do not enforce catching runtime exceptions.
      • Justification: This refactor makes it easier to identify where the bugs where the IllegalArgumentException is not caught.
      • Challenges: IllegalArgumentException is coupled tightly with AB3 code, and we had to make decisions on where to catch the error. Some streams also had to be changed to catch the errors arising from the refactoring.
  • Documentation:
    • User Guide:
      • Added Screenshots for User Interface for McGymmy #205 #151 #78
      • Added more questions to FAQ #151
    • Developer Guide:
      • Added implementation details of import and export feature. #103
  • Community:
    • PRs reviewed: PRs
  • Tools:
    • Integrated a third party library (Jfoenix) to the project (#80)