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
ModelandAccountand this problem was found when I was implementingAddCommand, where added entries had nowhere to go becauseModelwas supposed to contain severalAccountobjects, 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 theActiveAccountinterface 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
ExpenseorRevenuein Common Cents with a compulsory description, amount and optional tags.
- Justification: This is a core feature because it allows the app to track
ExpenseandRevenuein 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
ModelandAccount, 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
ExpenseorRevenuein 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
Categoryfield 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, adaptingEditCommandfrom AddressBook-level3 was more challenging than expected because while AB3 made all fields optional, I had to make bigger modifications toEditCommandandEditCommandParserto 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
Componentssection: #4 - Added General Inquiries into FAQ section: #6.1
Developer Guide:
- Added implementation details of the
addentry feature: Link - Added implementation details of the
editentry feature: Link