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 and Account and this problem was found when I was implementing AddCommand, where added entries had nowhere to go because Model was supposed to contain several Account 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 the ActiveAccount interface being implemented by the team.
    • Credits: The design was implemented by @Ziyang-98
    • Related Pull Request: #57

Features

  • Added the ability to add entries
    • What it does: allows the user to add Expense or Revenue 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 and Revenue 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 and Account, 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 of ActiveAccount.
    • Related Pull Request: #58
  • Added ability to edit entries
    • What it does: allows the user to modify an existing Expense or Revenue 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, adapting EditCommand from AddressBook-level3 was more challenging than expected because while AB3 made all fields optional, I had to make bigger modifications to EditCommand and EditCommandParser to account for the compulsory Category.
    • Related Pull Request: #131
  • Code contributed: RepoSense link

Project Management

  • Helped to upkeep code quality (examples: #217, #279)

  • Community:
  • Enhancements to existing features
    • Wrote tests for existing features to improve code coverage (examples: #87, #93, #154, #159, #217)
    • Created static helper/stub classes to aid in testing for other teammates (examples: #87, #154)

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