Thai Duong's Project Portfolio Page
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 inFood
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
- Tweaked AB3’s UniquePersonList to become a
- Project management:
- Enabled assertion on Java CI #109
- Documentation:
- User Guide:
- Developer Guide:
- Community:
- PRs reviewed (with non-trivial review comments): #39, #57, #76, #104
- Contributed to forum discussion:
- Reported bugs and suggestions for other teams in the class: List of bugs and suggestions