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: Introduction of count field + replenish function + optional flags. Link to PR: #24 #42
    • What it does: While the original add command only allowed addition of new items, now if add is used on existing item on inventory, it will replenish the item according to the count instead. When replenishing, only either name or id is a mandatory flag, rest is optional (count is assumed to be 1 if empty).
    • Justification: Unlike Person in AB3, an Item has a count field which indicates the stock of the Item. Thus, adding an existing item should replenish the item rather than throwing an error. The usage of optional fields is to bring convenience to the businessowner as providing all details correctly goes against the efficiency of CLI app.
    • Highlights: This requires quite a major change from the AB3 implementation, as AB3 did not support optional flags.
  • New Feature: Introduction of Cost Price and Sales Price fields. Link to PR: #65
    • What it does: Allows user to store cost price and sales price of each Item. Cost price is the price at which the business owner bought the item while sales price is the price at which the business owner sells the item. The flags for each are /cp and /sp.
    • Justification: It will eventually be used for bookkeeping purposes.
  • New Feature: Save Transactions and BookKeeping as persistent data (json). Link to PR: #92 #95
    • What it does: Previously, transaction data are only stored within a session (i.e. once the user exits the app, the data won’t be there anymore). Now, all transaction data are stored inside a json file. Furthermore, to facilitate financial bookkeeping purposes, total costs, total revenue, and total profit are stored in bookkeeping.json as well. Both BookKeeping and Transactions data can be found by typing list txns
    • Justification: It’s to allow the app to be useful for more than 1 session, which clearly has to be the case.
    • Highlights: I honestly struggled with understanding the design of the storage class at the start, thus the initial PR worked, but does not follow the existing dessign pattern closely. Upon further trials, the fixed code with correct design is given in this PR #161.
  • Testing:
    • I was in charge of jacking up the testing coverage for all existing classes overall. The following PRs show the testing code I did to increase Codecov testing coverage #185, #201, #204. As a result, our team’s Codecov coverage increased from 74.00% to 80.16%.
    • Did internal testing of BogoBogo. Sample issue: #182.
    • Fix bugs found from internal testing: #185, #172, #109, #98
  • Code contributed: RepoSense link

  • Documentation:
    • User Guide
      • Revise the UG partially for v1.3 and Mock PE #101
      • Include screenshots for the UG #105
    • Developer Guide
      • Wrote the implementation details of Ordering and drew the required UMLs #161
      • Helped a team member with the implementation details of Mutating Inventory and drew the required UMLs #185
      • Wrote part of use cases #73
    • Proofread the final version of UG and DG. Links to PR: #215, #216, #217, #218
  • Community:
    • Team-based Tasks:
      • Wrote most of the issues during meetings. Issues
      • Wrote AboutUs Page. AboutUs
    • PR Reviews: #27, #37, #52, #93, #192
    • Reported bugs and suggestions for other teams during PE-D (PE-D)