Project: SimplyKitchen

Overview

SimplyKitchen is a desktop app for food inventory management, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). With intuitive and practical features, SimplyKitchen can get food management tasks done faster and more efficiently than traditional GUI apps. Users interact with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 12 kLoC.

This project is based on the AddressBook-Level3 project created by the SE-EDU initiative.

Summary of contributions:

  • New Features:
    • Added Priority attribute to food items.
      • What it does: Allows the user to specify a priority, either high, medium or low, for a food item.
      • Justification: This feature provides a convenient way for the user to mark the importance of different food items.
      • Highlights: This enhancement affects existing commands and commands to be added in future. It requires the parser to identify a new prefix and perform necessary validation to ensure that the priority specified in the command is valid.
    • Added a popup window to show a list of expired food items.
      • What it does: If there are expired items in the inventory, a popup will automatically be launched during the start-up of the application, showing a list of expired food items. This popup can also be launch using the expired command.
      • Justification: This feature alerts the user of expired items in their inventory whenever the application is launched so that they will be reminded to dispose these items and not accidentally consume them. The user can also open this popup using the expired command so that they can access this list at any point of time.
      • Highlights: This enhancement requires an additional FilteredList and Predicate. A new command needs to be added for the user to open the popup on call. During the initialization of the application, it will need to check if there exists expired items. If no expired items are in the inventory, then the popup will not show up.
    • Ability to search for food items using description, expiry date, priority and/or tags.
      • What it does: This feature allows the user to search for food items using one or more of the above parameters. All food items matching all the specified parameters will be shown.
      • Justification: This allows the user to be able to quickly and efficiently find food items with common attributes or specific food items, depending on the specificity of their search.
      • Highlights: The existing find feature only allows for searching of descripton of food items. This enhancement affects existing commands and commands to be added in future. It required the parser to identify prefixes in the find command and filter the list according to the parameters of the search.
  • Enhancements:
    • Updated the GUI (Pull requests #170, #108, #129)
      • Change colour scheme of application
      • Added icons to attributes
      • Added labels for items that are expiring soon or have expired
      • Added colours to priorities
      • Cosmetic tweaks to enhance UI/UX
    • Added validation for user input
      • Check for invalid prefixes in command
      • Check for duplicate prefixes that are not supposed to be repeated in the command
    • Refactored AB3 code to adapt to SimplyKitchen
    • Wrote additional tests for new and existing features to increase coverage.
  • Code contributed: [Functional code] [Test code]

  • Documentation:
    • User Guide:
      • Added documentation for the features find and expired
      • Contributed to the section Notes about the command format and Command Summary
      • Did cosmetic tweaks to existing documentation
    • Developer Guide:
      • Added implementation details of the find feature including sequence and class diagram
      • Updated UML class diagram of Ui component
      • Added user stories
  • Documentation contributed: [User Guide] [Developer Guide]

  • Project management and contributions to team-based tasks:
    • Managed releases v1.3 - v1.4 (2 releases) on GitHub
    • Responsible for testing - ensured proper testing and quality assurance of the features of the application.
    • Responsible for integration - versioning of code, maintaining code repository and integrating various parts of the software to create a whole.
    • Contributed to planning and ideation of the application - product scope, user stories, use cases and non-functional requirements.
  • Community:
    • Reviewed PRs of peers
    • Reported bugs and suggestions for other teams