Project: HomeBoss

HomeBoss is a desktop application used for managing deliveries for home business owners. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 19 kLoC.

Given below are my contributions to the project.

  • New Feature: Added ability to register for an account in HomeBoss. The user is also allowed to delete the account if they wish to.

    • What it does: Allows the user to register for an account in HomeBoss. Upon registering for an account, the user will have their user details stored in a file, with the password hashed for enhanced security.
    • Justification: This feature improves the product as it allows the user to secure their data and prevent unlawful access to the data through the GUI.
    • Highlights: The password is hashed using SHA-256 hashing algorithm, which is a one-way hashing algorithm. This ensures that the password cannot be retrieved from the hash, and the password is stored securely. As the user should not be able to execute most of the commands without logging in (and by extension, having an account registered), the blocking of the execution of commands that deal with the Customer and Delivery database was also implemented. This register command also prepared for the recovery of an account in HomeBoss, by storing the user's secret question and answer in the user's account file.
    • Credits: The implementation of the SHA-256 hashing algorithm was adapted from this article.
    • Related Pull Requests: #124, #194, #225
  • New Feature: Added ability to recover an account in HomeBoss

    • What it does: Allows the user to recover their account in HomeBoss in case they forget their password.
    • Justification: This feature allows for corrective action to be taken in case the user forgets their password. This in turn ensures that they are able to access their data through the GUI if they forget their password.
    • Highlights: This feature required the user to first register for an account with a secret question and answer. The secret question is then shown to the user when prompted, and they are allowed to recover their account by resetting their password is their answer matches with the stored answer to the secret question.
    • Related Pull Request: #198
  • Major Enhancement: Revamped the UI experience of the user

    • What it does: This enhancement reordered the UI elements and gave the GUI a more aesthetic look. The UI is also made more personalised for the user by displaying the user's username in the UI.
    • Justification: The AB3's implementation of the UI has the error messages squeezed into a narrow rectangle that frequently required scrolling to get through. Thus for displaying things like Customer or Delivery details, it's difficult to display all the information in a single page. This enhancement allows the user to read more data at once before having to scroll. The UI was also made to feel friendly and welcoming to the user by displaying the user's username in the UI.
    • Highlights: Each ItemCard is redesigned to include details specific to our application. The footer was also edited to include information such as if the user is logged out or hasn't registered an account or if the user is logged in (where it'll then display the user's username instead). Also fixed Ui text overflow issue in AB3 such that text is wrapped.
    • Related Pull Requests: #271, #222, #119, #339
  • Enhancements to existing features: Updated the delete ID command from AB3 to customer delete ID, which allows for the deletion of Delivery objects linked to the deleted Customer.

    • What it does: Once a Customer is deleted, all Deliveries linked to the Customer will also be deleted.
    • Justification: If a Customer is no longer relevant to a home-based business (i.e., all the Deliveries are completed for a one-off Customer), all the Deliveries associated with this Customer will become irrelevant as well.
    • Highlights: Customer deletion will cascade delete all Deliveries associated with the Customer.
    • Credits: This method was adapated from AB3's delete ID command.
    • Related Pull Requests: #109, #230
  • Code contributed: RepoSense link

  • Community:

    • PRs reviewed: As of 14th November, I have reviewed 72 PRs (GitHub)
    • Reported bugs for other teams during PE Dry Run: I found 11 issues with my allocated PE-Dry-Run project.
  • Documentation:

    • User Guide:

      • Added and updated documentation for the features register, recover account, delete account, customer edit and refined content of User Guide.
      • Related Pull Requests: #454, #541
    • Developer Guide:

      • Modified the Ui class diagram for our application to include the new classes added / modified classes and refine content of Developer Guide.
      • Related Pull Requests: #546, #498