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 including DebtBuilder and TypicalDebts were also implemented in conjunction with the debt package to improve testability of code. DebtDate and DebtTime were enhancements added to Debt 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 to adddebt. 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 the Money class to implement this feature did not cause regressions in any other classes that have dependencies with Money, enabling the usage of this feature across commands such as adddebt and splitdebt and ensuring extensibility to future commands.
  • Code contributed: RepoSense link

  • Project management:
    • Managed deadlines and milestones consistently from v1.1 to v1.4.
  • Enhancements implemented:
    • Refactored the code for multi-index command parsing, including both functional code for commands such as splitdebt and deletedebt and test code to prevent regressions. #153
  • Documentation:
  • Contributions to team-based tasks:
    • Setting up the Project Notes Google Drive
    • Maintaining issue tracker
    • Enabling assertions in Gradle
  • Community:
    • Some PRs reviewed (with non-trivial review comments): #83, #196
    • Reported bugs and suggestions for other teams: 1, 2
  • Tools:
    • Made use of SourceTree, Git and GitHub for revision control
    • Made use of PlantUML for DG diagrams (Example)