Link Search Menu Expand Document

Project: BogoBogo

BogoBogo is a desktop inventory management application developed for small 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 10 kLoC.

Given below are my contributions to the project.

  • New feature: Listing transactions, a particular transaction, or the current order.
    • What it does: Allows BogoBogo to switch what is displayed on the main display panel upon the user’s request (e.g. display transactions).
    • Justification: This feature allows commands to indirectly control ui without introducing any additional coupling.
    • Highlights: This enhancement required a major revamp to AB3’s existing observer pattern. To allow the switching of the observed list (e.g. from inventory items to order items) within model, there was a need for a separate class to handle the logic. More details here
    • Links to PRs: #96, #100
  • New Feature: Delete and Remove Commands.
    • What it does: Allows the user to either remove an item from the inventory or delete the item data entirely.
    • Justification: AB3 only supports deletion. However, business owners might want to remove an unsold item from the inventory (e.g. expired goods), or delete an incorrectly entered item. Spawning 2 distinct commands from AB3’s original DeleteCommand enables this.
    • Links to PRs: #44, #63
  • Enhancement: Improve finding of items.
    • What it does: Instead of searching for exact word matches, BogoBogo searches for partial word matches. (e.g. “Po” shoul match “Potato” but not “Hippo).
    • Justification: Searching by name mirrors the conventional search bars which users are likely used to. Finding would have been very clunky otherwise. Searching with multiple fields is also now supported, making the search experience feel much more familiar and user-friendly.
    • Highlights: This required major refactoring of FindCommand and StringUtil. Implementing an intuitive search style required algorithmic thinking too.
    • Links to PRs: #165
  • Enhancement: Implemented more robust responses by BogoBogo.
    • What it does: BogoBogo will respond more appropriately under more niche scenarios.
    • Justification: This feature makes BogoBogo much more user-friendly. With robust responses, even a careless user will have a pleasant experience with BogoBogo.
    • Highlights: After my teammates have implemented the core components of a feature, I add on by refactoring. Along the way, I have added utility classes such as ItemDescriptor and refactored ArgMultimap to help me with this.
    • Links to PRs: #44, #53. #74, #192
  • Testing: Added and maintain testing for features other than my own:
    • Tests for storage component #188
    • Tests for order related commands #74
  • Code contributed: RepoSense link

  • Documentation:
    • User Guide:
      • Wrote the final version of the UG #159
      • Integrated a new Jekyll theme #159
    • Developer Guide:
      • Vetted high-level architectural diagrams
      • Wrote the implementation details of DisplayList #179
      • Wrote the proposal for an autocomplete feature #211
      • Consolidated and formatted use cases. #183
      • Formatted the Developer’s Guide #211
  • Community:
    • Generally assisted the team with advice on implementation of features and architectural patterns.
      • e.g. Noted the mismatch of abstraction level between BookKeepingStorage and TransactionStorage in #95.
    • Team based tasks:
      • Helped with managing and labelling of issues in the issue tracker.
      • Set up Github Actions and Jekyll theme in documentation.
      • Assisted team with Git issues (e.g. rebasing, forking, etc.)
    • PRs reviewed: #24 , #25 , #43 , #47 , #64
    • Reported bugs and suggestions for other teams during PE-D (PE-D)