Project: BudgetBaby

BudgetBaby is a desktop budget tracking application used to manage finances. The user interacts with it using a Command Line Interface (CLI), and it has a Graphical User Interface (GUI) created with JavaFX. It is written in Java, and has about 10 kLoC.

Summary of Contribution

Given below are my contributions to the project.

  • New Feature: Developed financial records related commands add-fr, edit-fr and delete-fr commands

    • What it does: allows the user to add, edit and delete financial records from the budget tracker.
    • Justification: These features are fundamental to the product, as financial records are the main items stored in the budget tracker. The management of financial records are tasks which are likely to be carried out by users on a daily basis.
  • New Feature: Implemented view-month command

    • What it does: allows users to view any specific month’s associated data and financial records.
    • Justification: This feature is essential to our budget tracker, as users are likely to view financial records and related information of a past month frequently when managing their finances and reviewing their spending habits. This command alters all information displayed in the GUI. Adding this command requires a comprehensive understanding of most models in the project, as well as the overall logic flow from GUI to Logic to Model. This command made use of Observer Pattern and the overall implementation was challenging as it affects many components of the project.
    • Highlights: Although it is just one single command, the implementation effort goes beyond the command itself. In order to introduce the concept of Month into the project, a whole new layer of models including both UniqueMonthList and Month which contains FinancialRecordList will need to be added to the project. Implementing Month related features also introduce many complications in other basic features regarding FinancialRecord, as FinancialRecord now needs to be added to their respective Month and there are much more constraints which need to be taken into consideration, for example, if the FinancialRecord will violate the restrictions we set for a Month.
  • Code Contribution RepoSense Report

    • Initiate BudgetBaby OOP classes and implement add-fr command #45
    • Implement view-month command #86
    • Implement edit-fr and add-fr enhancement features #131
  • Enhancement:

    • Wrote additional tests for existing features to increase coverage (Pull requests #216)
  • Project management:

    • Set up project organisation, repository and issue tracker
    • Set up and wrap up project milestones v1.1 - v1.4 on Github
    • Managed releases v1.3 trial, v1.3 and v1.4 (3 releases) on GitHub
    • Create 30+ issues on project issue tracker.
  • Documentation:

  • Community:

    • PRs reviewed (with non-trivial review comments): #87
    • Contributed to forum discussions (examples: #34)
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3, 4, 5)