Nicholas Canete's Project Portfolio Page
Project: Common Cents
Common Cents is a desktop money-tracking application to help small business owners to organise their expenses. With Common Cents, a user can hold monetary information such as expenses and revenue in multiple accounts in which each account represents a business. 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.
Given below are my contributions to the project.
Project Design
- Helped devise a solution to create a default account once Common Cents is launched.
- Justification: The initial problem was that early in the project there was no robust UI layer between
Model
andAccount
and this problem was found when I was implementingAddCommand
, where added entries had nowhere to go becauseModel
was supposed to contain severalAccount
objects, but it was difficult to target an existing, selected account. The immediate solution I helped devise with the team was to either prompt the user to create an account before using the app, or create an account at launch. Upon further discussion, we had gone with the latter option, resulting in theActiveAccount
interface being implemented by the team. - Credits: The design was implemented by @Ziyang-98
- Related Pull Request: #57
- Justification: The initial problem was that early in the project there was no robust UI layer between
Features
- Added the ability to add entries
- What it does: allows the user to add
Expense
orRevenue
in Common Cents with a compulsory description, amount and optional tags.
- Justification: This is a core feature because it allows the app to track
Expense
andRevenue
in the first place and fulfills the fundamental need for the app for budgeting. - Highlights: The implementation of this feature revealed an early problem of a weak UI layer between
Model
andAccount
, as it was difficult to specify where the added entries would go to. This also revealed a problem of users being able to use Common Cents without a default account, which paved the way for the implementation ofActiveAccount
. - Related Pull Request: #58
- What it does: allows the user to add
- Added ability to edit entries
- What it does: allows the user to modify an existing
Expense
orRevenue
in a selected account to change either its description, amount, tags or all of them. - Justification: This feature improves the product significantly because a user can make mistakes in commands or the information about a transaction can change anytime in the real world and the app should provide a convenient way to rectify them.
- Highlights: The implementation was challenging because certain design choices such as making the
Category
field in the command compulsory had to be made, at the expense of user convenience and ease of implementation. For instance, making an edit command while also including the category may slow down users in typing commands. Furthermore, adaptingEditCommand
from AddressBook-level3 was more challenging than expected because while AB3 made all fields optional, I had to make bigger modifications toEditCommand
andEditCommandParser
to account for the compulsoryCategory
. - Related Pull Request: #131
- What it does: allows the user to modify an existing
- Code contributed: RepoSense link
Project Management
- Community:
- Enhancements to existing features
Documentation
User Guide:
- Added User Guide introduction section: Introduction
- Added documentation for the
Components
section: #4 - Added General Inquiries into FAQ section: #6.1
Developer Guide:
- Added implementation details of the
add
entry feature: Link - Added implementation details of the
edit
entry feature: Link