Wayne Zhang's Project Portfolio Page
Project: PayMeLah
PayMeLah is a desktop app for keeping track of and managing the debts your friends owe you. It can also help do simple calculations for you, such as including GST or splitting debts amongst your friends. What’s more, it is optimised for you to do everything from just your keyboard!
Given below are my largest contributions to the project.
- New Feature: Implemented majority of the
paymelah.model.debt
package #61, #129- What it does: Represents a debt and its associations as classes within the PayMeLah code base.
- Justification: The package follows the Object-Oriented Programming paradigm that is used throughout PayMeLah.
- Highlights: This package is the core of what makes PayMeLah different from AB-3.
testutil
classes includingDebtBuilder
andTypicalDebts
were also implemented in conjunction with thedebt
package to improve testability of code.DebtDate
andDebtTime
were enhancements added toDebt
at a later stage, requiring extensive refactoring throughout the PayMeLah code base for both functional code and test code to prevent regressions.
- New Feature: Implemented the
adddebt
command #80, #98, #153- What it does: allows the user to add debts to the persons in PayMeLah, enabling them to track information related to the debts such as a description, money amount, date and time.
- Justification: This is the core feature of PayMeLah that enables users to keep track of debts and associate them with the persons who own the debts.
- Highlights: Use of OOP ensures that changes made to the validity of user inputs relating to
debt
classes such as the<money>
input will not affect the functionality of the code related toadddebt
. Implementation of automated testing to prevent regressions.
- New Feature: Enable calculation of GST/Service Charge when adding debts #138
- What it does: allows the user to (optionally) specify to include Service Charge and GST in money amounts for debts added to PayMeLah.
- Justification: This feature helps simplify debt-adding processes for users who are confused about how to calculate GST and Service Charge by doing the calculation for them.
- Highlights: The final implementation of this feature made use of an elegant design where target users (NUS students) simply have to make use of common Singaporean lingo, a money amount followed
++
, to indicate a need for PayMeLah to calculate GST and Service Charge. Through the use of OOP design and encapsulation, modifications done to theMoney
class to implement this feature did not cause regressions in any other classes that have dependencies withMoney
, enabling the usage of this feature across commands such asadddebt
andsplitdebt
and ensuring extensibility to future commands.
-
Code contributed: RepoSense link
- Project management:
- Managed deadlines and milestones consistently from
v1.1
tov1.4
.
- Managed deadlines and milestones consistently from
- Enhancements implemented:
- Refactored the code for multi-index command parsing, including both functional code for commands such as
splitdebt
anddeletedebt
and test code to prevent regressions. #153
- Refactored the code for multi-index command parsing, including both functional code for commands such as
- Documentation:
- User Guide:
- Introduction: Welcome message and Using this guide #267
- Tutorial: Adding your first debt #273
- Input-specific behaviour #184
- Adding a debt:
adddebt
#281 - Tweaks to existing feature documentation, including
help
andadd
#201 - FAQ #346
- Developer Guide:
- Implementation for
adddebt
feature #198 - Updating the
Model
component #132 - Adapt NFRs from CS2103T tP Constraints #25
- Implementation for
- User Guide:
- Contributions to team-based tasks:
- Setting up the Project Notes Google Drive
- Maintaining issue tracker
- Enabling assertions in Gradle
- Community:
- Tools:
- Made use of SourceTree, Git and GitHub for revision control
- Made use of PlantUML for DG diagrams (Example)