Boh Cheng Hin's Project Portfolio
Project: SimplyKitchen
Overview
SimplyKitchen is a desktop application for food inventory management. More importantly, SimplyKitchen is optimised for users who prefer working with a Command Line Interface (CLI), while still having the benefits of a Graphical User Interface (GUI). It is built using Java and JavaFX. It utilises Gradle Build Tool for build automation, GitHub Actions for continuous integration, and JUnit for tests.
This is a brown-field project, and was developed from the AddressBook-Level3 project created by the SE-EDU initiative.
Summary of contributions
- Enhancements:
- Implemented
Description
field forFood
.- What it does: User can specify a description for each food item to identify them in the app.
- Justification: A description suits our application better as in addition to a food item’s name, a description of the food item will allow the user to provide more information of the food, making food items easier to identify.
- Highlights: This update required good coordination with team members, as they were updating different fields as well. We managed to streamline the merging process by communicating the order of merge, to reduce merge conflicts.
- Implemented undo/redo commands.
- What it does: Allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.
- Justification: This feature benefits users greatly as it provides them with an easy way to remedy any incorrect input entered into the application, improving the user-friendliness of the application.
- Highlights: This enhancement affected commands that were added after implementation. It required discussions with team members who implemented commands that were undoable, and we discussed the method of implementation for those commands.
- Credits: {https://github.com/se-edu/addressbook-level4 was referenced for this feature, but changes were made to fit into the architecture of the application}
- Added conditions for duplicate food items.
- What it does: This requires users to add a
Food
that do not have the sameDescription
,ExpiryDate
andTags
as anotherFood
. The app shows an appropriate error message when the user attempts to add a duplicate or edit an existingFood
into a duplicate. - Justification: Previously, a
Food
was a duplicate if it had the sameDescription
, and either the samePriority
orExpiryDate
. This was not very applicable, and it would have caused confusion to users. The duplicate condition was changed to check for fields that were more appropriate. - Highlights: This required changes to test cases on duplicate food items as well as the error messages for commands due to duplicate food items.
- What it does: This requires users to add a
- Implemented
- Enhancements to existing features:
- Expired and Expiring lists shows tags for each
Food
, and ensured the tags are always visible by wrapping them if they are larger than the width of the GUI. Implementation was difficult as it required an understanding of FlowPane, widthProperty and use of listeners to update width of nodes for the wrapping to work correctly. It also involved many tests and trials. (Pull request #173) - The order of food cards in the Expired and Expiring lists used to change unexpectedly when fields of foods were edited. This was remedied by sorting them by their
Description
first, thenExpiryDate
, when previously it was sorted by justExpiryDate
. (Pull request #181)
- Expired and Expiring lists shows tags for each
- Project management and contributions to team-based tasks:
- Created the fridge icon in the SimplyKitchen logo.
- Contributed to planning and ideation of application.
- Responsible for all documentations: responsible for the quality of all project documentation.
- Responsible for testing: ensured proper testing and the completion of testing within a time frame.
- Responsible for integration: responsible for the versioning of the code, maintaining the code repository and integrating various parts of the software to create a whole.
-
Code contributed: [Functional code] [Testing code]
- Documentation:
- User Guide:
- Developer Guide:
- Added use cases, user stories, and description of implementation for
undo
andredo
. #87, #128 - Updated all existing UML diagrams to have class and object names used in SimplyKitchen, and updated occurrences of AddressBook and its related terms in the guide to terms for SimplyKitchen. #84
- Added a table of contents, added "Back to top buttons" and updated the "About this document" section with hyperlinks. #182
- Added use cases, user stories, and description of implementation for
- Review/mentoring contributions::
- Community: