Project: PennyWise

PennyWise is a desktop application that empowers students with the ability to make sensible financial decisions,helping students to manage their budget. 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.

The following are my contributions to the project:

  • New Feature: Created the class Entry to manage objects being added to the application: PRs #30, #35
    • What it does: Allows both the Expenditure and Income classes to inherit from this class as they have similar properties.
    • Justification: This feature enhances our code reusability since they have similar properties, functions can largely be created for Entry type classes by taking advantage of polymorphism.
    • Highlights: The implementation required many rounds of alteration because it was the initial feature to be added to the application, and the parent Entry class formed the foundation for our application to be built on.
  • Feature: Added the ability to add entries to the application: PRs #30
    • What it does: add allows the users to create entries in either the ExpenditureList or IncomeList in PennyWise.
    • Justification: This feature is an essential component of PennyWise as the entries already added to the application can then be further used for other PennyWise features.
  • Feature: Added the ability to edit entries to the application: PRs #43, #64
    • What it does: edit allows the users to edit entries in either the ExpenditureList or IncomeList in PennyWise.
    • Justification: This feature is an essential component of PennyWise as the entries already added to the application can be edited should the users make any mistakes in typing the details of their entries.
  • Feature: Added the ability to delete entries to the application: PRs #35
    • What it does: delete allows the users to delete entries in either the ExpenditureList or IncomeList in PennyWise.
    • Justification: This feature is an essential component of PennyWise as the entries already added to the application can be deleted should the users make any mistakes in entering an expected entry that did not happen, or should the user want to completely remove any erroneous entry that they have made.
  • Feature: Added the ability for users to find out the commands available in PennyWise: PRs #106
    • What it does: help opens a new window with a table of PennyWise’s commands and a link to our user guide.
    • Justification: This feature provides an easy way to view the available commands that can be used in the application.
  • Code contributed: RepoSense link

  • Project management:
    • Co-managed releases v1.2 and v1.3 (2 releases) on GitHub together with @ruihan00.
    • Logging of weekly tasks, deadlines and responsibilities on our project notes.
    • PRs Reviewed by me
  • Enhancements to existing features:
    • Removed traces of AB3 code (Person, addressbook) in the documentation and code base. PRs: #35, #40, #70
    • Wrote additional tests for existing features to increase coverage from 64.86% to 67.35% (+2.49%) and 67.09% to 68.60% (+1.50%). PRs: #86, #165
    • Created PennyWise’s logo.
  • Documentation:
    • User Guide:
      • Added documentation for all features, command format and command summary. PRs: #90
      • Added screenshots for all features for User Guide Peer review (before cleanup by @EmilyOng). PRs: #97
    • Developer Guide:
      • Added implementation details of the add feature. PRs: #70
      • Added all use cases for PennyWise into the DG. PRs: #70
      • Added test cases for add, delete, edit, view, summary into the DG. PRs: #70, #76
  • Community:
    • PRs reviewed (with non-trivial review comments): #34, #71, #81, #104
    • Contributed to forum discussions (examples: 1, 2)
    • Reported bugs and suggestions for other teams in the class: PE-D Issues Link