My team of 5, including myself and 4 other software engineering teammates, were tasked to enhance an existing address book application. We chose to morph the address book into an expiry date tracker, Xpire. Xpire contains both a replenish list containing items that need to be stocked up on and an expiry date tracker containing the list of expiring items. With this and our implemented features, Xpire makes management of items fuss-free for users.
-
Major enhancement: Added
ShiftCommandthat allows the user to transfer items to and fro the replenish list.-
What it does: Enables the user to transfer an item from the tracking list into the replenish list.
-
Justification: Instead of keying in an item’s details again, users simply need to key in the given item index to transfer an existing item to the replenish list. This makes the overall user experience more fuss-free.
-
Highlights: The implementation of this enhancement required a refactor of the
Modelcomponent using important concepts such as polymorphism and inheritance. The implementation was also challenging as it required an in-depth understanding of generics to avoid repeated code and a huge overhaul of the existing implementation. Additionally, the implementation also familiarised me with JSON serialization using the Jackson Library.
-
-
Major enhancement: Added the ability to automatically add an item to the replenish list once an item in the tracking list runs out.
-
What it does: Automatically transfers an item that has depleted to the replenish list.
-
Justification: Instead of having the user delete an item on the tracking list and add it into the replenish list manually when it runs out, this enhancement collapses this two-step process into a one-step process.
-
Highlights: The implementation required an in-depth analysis of user needs and comprehensive testing to ensure that edge cases will also be factored in.
-
-
Minor enhancement: Added the ability to input item quantity. The parsing of the
Quantityfield familiarised me with Regex. This makes tracking multiple items of the same type easier as users only need to key the item’s details once. -
Minor enhancement: Added the ability to reduce item quantity in the tracking list. This allows users to better keep track of their items as users can simply update their items when a certain amount of the item is used up.
-
Minor enhancement: Added the ability to input similar items into the tracking list. This is useful as it provides users with an option to add to existing items in cases where they bought the same item on separate occasions.
-
Code contributed: [RepoSense]
-
Other contributions:
-
Enhancements to existing features:
-
Add functionality to input items into the tracking list (Pull request [#13])
-
Add quantity field for items (Pull request [#56])
-
Add functionality to reduce item quantity in the tracking list (Pull request [#58])
-
Refactor model and storage to contain both tracking list and replenish list (Pull request [#122])
-
Add shift command to transfer items to and fro replenish list (Pull request [#122])
-
Wrote additional tests for existing features (Pull requests [#78], [#99], [#227])
-
-
Documentation:
-
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
