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
EditCommand
class 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
MenuContainsKeywordsPredicate
andLocationContainsKeywordsPredicate
to handle the filtering of different types of search queries. - Credits: The ability to find by multiple keywords was adapted from the
FindCommand
class in the original AB3.
- Code contributed:
- Contributions to team-based tasks:
- Refactored
Person
from the original AB3 intoStall
for 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 theStall
class. I also had to change all existing tests to suit the newStall
class.
- Refactored
- Project management:
- Released v1.3 along with the jar file on GitHub.
- Enhancements to existing features:
- Refactored
AddCommand
from AB3 toAddStallCommand
for FoodNotes. - Refactored
DeleteCommand
from AB3 toDeleteStallCommand
for FoodNotes.
- Refactored
- Documentation:
- User Guide:
- Developer Guide:
- PR(s): #84
- Added implementation details of the
find-by-item
feature. - 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
JsonAdaptedStall
andJsonAdaptedItem
, were written by me. My teammates pulled my implementation from my forked repo before committing to the main repo.