Emily Ong's Project Portfolio Page
Project: PennyWise
PennyWise is a desktop application that empowers students with the ability to make informed financial decisions, by providing a graphical analysis of their financial activities. 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
EntryType
class (PRs: #33) to encapsulate theExpenditure
andIncome
entry types in the application- What it does: Supports validation of the entry types for user command inputs, and creates an immutable type to specify the type property of an entry in the application
- Justification:
- The application treats expenditure and income entries similarly by making use of an
Entry
class (by @JasonYapzx) to take advantage of polymorphism - The
EntryType
class supports encapsulation by bundling the validation of entry types for user command inputs, and provides an enumeration to handle entry types throughout the application
- The application treats expenditure and income entries similarly by making use of an
- New Feature: Created the
GraphConfiguration
class (PRs: #81) to encapsulate the configurations required for the graph coupled with an executing command in the application- What it does: Improves code re-usability and organisation by allowing configurations required for the graphical display in the application to be encapsulated in a single object
- Justification:
- Controlling graph state can be complex, requiring us to manage several variables such as the entry type of the data in the graph, the type of graph and whether the graph should be updated or not
- By encapsulating the graph configuration, it is easier to pass the graph configuration around the application and ensure that we improve coupling
- New Feature: Added the ability to view entries in the application (PRs: #33, #81)
- What it does:
view
allows the user to list the expenditure or income entries in the application, and additionally supports filtering of the entries by month - Highlights:
- The
view
command has a side effect of updating the data shown in the graph panel, requiring us to take additional work to synchronise the data and maintain a single source of truth for the data in both the list panel and graph panel - The
view
command is complementary to @sharmaine1028 and @yuanxi1’s work in producing visualisations of the users’ expenditure and income entries in the application, which is a key feature of PennyWise
- The
- Justification:
- The
view
command is a standard feature that addresses a high priority user story of being able to view the list of expenditure and income entries in the application - It provides additional convenience for users to obtain an overview of their expenditure and income entries with a one-shot command, without having to add extra clutter by introducing an additional command to display graphs, which can complicate the state management of the data in the list panel and graph panel
- The
- What it does:
- New Feature: Improved the styling of the application (PRs: #88)
- What it does: Enhanced the look-and-feel of the application by applying color themes suggested from @sharmaine1028 and applied modern design techniques, such as shadowing and font-typing
- Highlights:
- The CSS files inherited from AddressBook Level-3 was almost completely overhauled
- To improve code readability and re-usability, we defined CSS variables in the CSS files, allowing us to easily customise the theme of the application
- Justification:
- User interface is an important part of the application as it is often one of the first judging points from users
-
Code contributed: RepoSense link
- Project management:
- PRs Reviewed by me
- Helped with PE-D triaging in PennyWise’s issue tracker
- Enhancements to existing features:
- Community:
- PRs reviewed (with non-trivial review comments): #105, #90, #42
- Contributed to forum discussions (examples: #1)
- Reported bugs and suggestions for other teams in the class: PE-D Issues Link
- Documentation:
- User Guide:
- Improved documentation with more user-friendly texts (PRs: #104)
- Added screenshots for all commands and user interface (after an initial work by @JasonYapzx) (PRs: #104)
- Developer Guide:
- User Guide: