Kai Sheng's Project Portfolio Page
Project: FoodNotes
FoodNotes is a desktop address book application used to record reviews on food stalls and menus. 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.
- New Feature: Added the ability to edit stalls and menu items in FoodNotes.
- What it does: Allows the user to edit the details of a stall or menu item.
- Justification: This feature improves the product significantly because it allows the user to correct any mistakes made when adding a stall or menu item, or even update them with new information, for example if the price of a menu item has increased.
- Highlights: This enhancement affects existing commands and commands to be added in the future as any change to the fields of a stall or item will change how it is edited. It required an in-depth analysis of design alternatives, for example how to handle editing reviews if they don’t already exist, as it is not compulsory for stalls or items to have reviews in FoodNotes.
- Credits: The ability to have optional parameters while editing was adapted from the
EditCommandclass in the original AB3.
- New Feature: Added the ability to find stalls in FoodNotes.
- What it does: Allows the user to find stalls by name, location or menu items.
- Justification: This feature improves the product significantly because it allows the user to find stalls that they are looking for easily, for example if they want to find a stall that sells a particular dish.
- Highlights: This enhancement required the creation of new predicate classes such as
MenuContainsKeywordsPredicateandLocationContainsKeywordsPredicateto handle the filtering of different types of search queries. - Credits: The ability to find by multiple keywords was adapted from the
FindCommandclass in the original AB3.
- Code contributed:
- Contributions to team-based tasks:
- Refactored
Personfrom the original AB3 intoStallfor FoodNotes. This was challenging to do at the beginning as I had to remove unnecessary fields and methods, and add new ones to suit the needs of FoodNotes. Every command, even simple ones like adding, had to be refactored for theStallclass. I also had to change all existing tests to suit the newStallclass.
- Refactored
- Project management:
- Released v1.3 along with the jar file on GitHub.
- Enhancements to existing features:
- Refactored
AddCommandfrom AB3 toAddStallCommandfor FoodNotes. - Refactored
DeleteCommandfrom AB3 toDeleteStallCommandfor FoodNotes.
- Refactored
- Documentation:
- User Guide:
- Developer Guide:
- PR(s): #84
- Added implementation details of the
find-by-itemfeature. - Added
FindItemSequenceDiagram. - Updated UML diagrams for
ArchitectureSequenceDiagram,CommitActivityDiagram,LogicClassDiagram,ParserClasses,StorageClassDiagram,UiClassDiagram.
- Community:
- PRs reviewed (with non-trivial review comments): #60, #63, #72, #101
- Reported bugs and suggestions for other teams in the class: PE-D Issue Tracker
- Peer evaluated iPs and gave insightful feedback to peers on Canvas.
- Some parts of Storage, such as
JsonAdaptedStallandJsonAdaptedItem, were written by me. My teammates pulled my implementation from my forked repo before committing to the main repo.