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 for Food.
      • 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 same Description, ExpiryDate and Tags as another Food. The app shows an appropriate error message when the user attempts to add a duplicate or edit an existing Food into a duplicate.
      • Justification: Previously, a Food was a duplicate if it had the same Description, and either the same Priority or ExpiryDate. 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.
  • 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, then ExpiryDate, when previously it was sorted by just ExpiryDate. (Pull request #181)
  • 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:
      • Updated the documentation for delete, find, help commands. #32, #75
      • Added guides for undo and redo commands. #87
      • Added benefits to each command description for user to understand the purpose of each command better. #131
    • Developer Guide:
      • Added use cases, user stories, and description of implementation for undo and redo. #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
  • Review/mentoring contributions::
    • PRs reviewed (with non-trivial review comments): #50, #59, #83
  • Community:
    • Contributed to forum discussions (examples: 1, 2, 3)
    • Reported bugs and suggestions for other teams (examples: 1, 2, 3)