Project: Warenager

Warenager is an inventory management application to help warehouse managers of small scale companies keep track of stocks in their warehouse. It optimizes inventory management tasks for warehouse managers including but not exhaustive of updating, searching and sorting stocks via Command Line Interface (CLI), while still having the benefits of a Graphical User Interface (GUI).

Given below are my contributions to the project.

  • Code Contribution
    • Here is the link to my code on the tP Code Dashboard.
  • Features and Enhancements Implemented
    • New Feature: Added the ability to update existing stocks in the inventory. (Pull requests #101, #157, #214, #222, #258)
      • What it does: Allows the user to update the details of the desired stocks.
      • Justification: This feature allows the user to update stocks without the need to remove first and then add back the stocks with new details.
      • Highlights: Multiple stocks are able to be updated in one step. User can update the name, source, low quantity threshold, quantity, and location details of a stock. The implementation was challenging as the implementation need to preserve data integrity if an error occurs while updating.
    • New Feature: Added the ability to sort existing stocks in the inventory. (Pull request #151)
      • What it does: Allows the user to sort the stocks in the inventory by the field the user wants.
      • Justification: This feature allows the user to sort stocks according to the user’s preference for easier viewing.
      • Highlights: User can sort by name, source, quantity, serial number, or location and in both ascending and descending order. The implementation was challenging since it requires comparators to sort the stocks.
    • New Feature: Added the ability to suggest correct commands to the user. (Pull requests #133, #187, #261)
      • What it does: Suggests a correct command format to the user if the command the user entered is invalid.
      • Justification: This feature allows the user to view and type the correct command form easily after entering an invalid command.
      • Highlights: This feature uses the minimum edit distance heuristic to calculate the closest correct command word. The suggestion for the fields and prefixes is generated based on the user input and default parameters. The implementation was the most challenging since a lot of research on the algorithm for string comparison heuristic was needed.
  • Git & Repository:
    • Created and set up project repository.
    • Used GitHub Projects feature to create kanban boards to track user stories. (Link)
    • Setup codecov for the team to track coverage for tests (Pull requests #69, #301)
    • Managed the issue tracker: Link to issues created
  • Reviews & Merging:
  • Bugs & Forums:
    • Fixed bugs in update and suggestion features (Pull requests #222, #258, #261)
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  • Testing:
    • Created both unit and integration tests for update, suggestion, and sort features. (Pull requests #112, #188, #189, #190, #192, #254, #284)
    • Improved coverage by creating tests for QuantityAdder and ModelManager. (Pull request #264)
    • Created unit tests for UpdateStockDescriptor. (Pull request #313)
  • Documentation:
    • User Guide:
      • Added prefixes table, command information, command summary table, and invalid prefixes warning. (Pull requests #252, #274)
      • Added documentation for update, sort, and suggestion features. (Pull requests #121, #145, #164, #209, #274, #284, #293)
    • Developer Guide:
      • Added implementation details, UML diagrams, use cases, and manual testing test cases of update, sort, and suggestion features. (Pull requests #69, #145, #164, #274, #284, #293, #344)
      • Added sequence and class diagrams for Logic API. (Pull request #221)
      • Added user stories in the form of a table. (Pull requests #51, #284)
      • Added effort appendix to justify project effort and workload. (Pull request #293)
  • Project Management:
    • Managed releases v1.1 - v1.4 (5 releases) on GitHub.
  • UI:
    • Updated the table in help window and adjusted font. (Pull requests #219, #344)
    • Gave feedback during the initial design of UI and helped with picking color scheme.