Jia Hao's Project Portfolio Page
Project: UniCa$h
UniCa$h is a finance tracking application for university students who want to be more financially conscious. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 20 kLoC.
Given below are my contributions to the project.
- Get Total Expenditure: pull requests #206, #143, #115, #80, #65
- What it does: retrieves the total expenditure of the user given a mandatory month and optional category and year. Only includes the spending on expense transactions.
- Justification: our users may want to view an overview of their total expenditure in a month to more accurately set their budget.
- Budget Management Logic: pull requests #129, #145
- What it does: provides users with a way to create a global daily/weekly/monthly budget to track their overall expenditure with respect to the budget.
- Justification: after understanding their total expenditure, users may want to then set budgets to better manage and track their spending.
- Highlights: modified the persistence system to also store the budget information.
- Notes: the budget model and preliminary logic were implemented by Lip Wei and Jamie respectively.
- Setup TestFX for UI testing: pull requests #93
- What it does: provides ways to automatically perform UI testing such as button clicks or keyboard inputs.
- Justification: ensure that common manual testing cases are checked without human intervention.
- Highlights: increased unit test coverage from ~80% to > 90%, modified the CI using GitHub Actions and Gradle to ensure that reported coverage on CodeCov includes UI tests.
- Notes: set up the preliminary set of UI tests and provided a guide on writing UI tests, Rubesh, Ernest, and Lip Wei had added individual UI tests based off on that.
- Command Usage Message Builder: pull requests #117
- What it does: generates command usage messages in a standardised format.
- Justification: generating raw command usage
MESSAGE_USAGE
withString
concatenation is prone to human error and may not be uniform across commands. - Highlights: using builder pattern to implement usage message builder.
-
Code contributed: RepoSense link
- Project management:
- Managed releases
v1.4
(1 release) on GitHub
- Managed releases
- Enhancements to existing features:
- Refactor codebase to remove any dependency to AB3 (Pull requests #75)
- Integrate UI testing reporting with CodeCov, increasing visible test coverage from ~80% without UI coverage to > 90% with UI coverage (Pull request #93)
- Includes changes to Gradle configuration and GitHub actions, more documentation in developer guide for Continuous Integration
- Migrate file persistence from AB3 to work with Transaction and Budgets (Pull requests #68 and #129)
- Documentation:
- All:
- User Guide:
- Added documentation for own features like get total expenditure and budget management logic
- Added documentation on command breakdown and constraints of argument and prefixes
- Migrated old AB3 layout to use new layout including TOC and callouts
- Developer Guide:
- Added implementation details of own features like get total expenditure and budget management logic
- Added documentation on continuous integration
- Added documentation on architecture and storage component
- Migrated old AB3 layout to use new layout including TOC and callouts
- Community:
- PRs reviewed (with non-trivial review comments): refer to here
- Reviewed ~65 of the ~140 PRs opened with ~216 comments as per the public dashboard (as of 13 Nov 2023)
- Contributed to forum discussions: refer to here
- Provided assistance and participated in discussions on the forum with ~70 posts
- PRs reviewed (with non-trivial review comments): refer to here
- Tools:
- Integrated TestFX to the project (Pull request #93)