Project: DonnaFin.io

DonnaFin.io is a desktop address book application used by financial advisors to keep track of their client information and related tasks. 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.

  • New Feature:
    1. Parser Stategy and Parser Context
      • What it does: Allows for switching of ParserStrategy when executing a command. This happens during the change of tabs and allows some commands to be rejected in certain tabs and not rejected in others.

      • Justification: Current problem: Had to find a way to swap between Parsers to reject some commands First solution: Have some massive conditional operator to handle it. Reason for rejecting: Not feasible to write that much duplicate code.

      • Highlights: Strategy designed was used to work around the issue. We used it to isolate the business logic of a class from the implementation details.

      • Credits: Employed the Strategy pattern found in Dive into design patterns

      • PR: PR#179

    2. Controllers for UI, ClientPanel:

      • What it does: Handles the logic when accessing the other tabs etc

      • Justification: The app requires a controller to handle more logic than just the basic javafx framework.

      • PR: PR#69

    3. Financial information:
      • What it does Required field that stores information regarding the client. Namely, assets liabilities, policies.

      • Justification Required for our project as it is our key feature.

      • PR: : PR#105

    4. Add different tabs for the other financial information:
      • What it does: Create the actual tabs that the SwitchTabCommand can access

      • Justification The user would want to have tabs to organise his information, instead of just having one page display everything. Tabs are a very efficient way of doing that.

      • PR: PR#86

  • Code contributed: RepoSense link

  • Project management:
    • Directed architecture changes alongside Bharath:
      • Proposed architecture changes for the entire project.
      • Suggested the layered architecture as the best way to allow for better test and briefed each team mate on how to make the changes.
    • Provide constructive feedback for PRs:
      • Look through multiple PRs and provided further insights and corrections that could be done.
  • Enhancements to existing features:
    1. Notable BugFix: *. Realtime update for notes Previously, our commands would only save after executing another command. * PR: #307

      *. Make Attribute table expand when window expands * PR: #304

      *. Add wrap to multiple text box * PR: #288 * PR: #298

    2. Provided architecture advise:
    3. Add home command:
      • What it does: Allows the user to return to the home page.

      • Justification: The user needs to be able to navigate between tabs and the home screen, having home would be an appropriate command.

      • PR: Home command

  • Documentation:
    • User Guide:
      1. Create the DonnaFin logo and updated the introduction. #320
      2. Updated the guide for duplicates and near duplicates. #302
    • Developer Guide:
      1. Update architecture diagram (Pull requests #23)
      2. Created and handled puml diagrams for most of Section 4: Architecture and Implementation part of our dev guide. Notable contributions include how ParserContext and ParserStrategy works, how commands are being execute, and even partitioning the command into the three main categories, Model-level, Client-Level and Ui-browsing level commands. After which going into detail about how each work. #323 (Disclaimer: Bharath has made much contributions in this aspect as well)

      3. Section 6.2: User stories. Created most of the user stories there are currently seen in the developer’s guide.
  • Community:
    • Give advice for any ParserContext and Strategy related work.
    • Give advice on architecture related design for the team.
    • Left review for many PRs on how to improve.