PROJECT: MyMorise


Overview

MYMorise — Manage Your Money(MYM) is a desktop application for those who prefer tracking personal expenses on their computers. With MYMorise, you can easily see your daily expenses as well as a summary, along with other useful functionalities. More importantly, MYMorise is optimized for those who prefer to work with Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI) created with JavaFX. It is written in Java, and has about 20 kLoC.

Summary of contributions

  • Major enhancement: added the ability to undo/redo previous commands

    • What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.

    • Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.

    • Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.

    • Credits: {mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}

  • Minor enhancement: added a history command that allows the user to navigate to previous commands using up/down keys.

  • Code contributed: [Functional code] [Test code] {give links to collated code files}

  • Other contributions:

    • Project management:

      • Managed releases v1.3 - v1.5rc (3 releases) on GitHub

    • Enhancements to existing features:

      • Updated the GUI color scheme (Pull requests #33, #34)

      • Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests #36, #38)

    • Documentation:

      • Did cosmetic tweaks to existing contents of the User Guide: #14

    • Community:

      • PRs reviewed (with non-trivial review comments): #12, #32, #19, #42

      • Contributed to forum discussions (examples: 1, 2, 3, 4)

      • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)

      • Some parts of the history feature I added was adopted by several other class mates (1, 2)

    • Tools:

      • Integrated a third party library (Natty) to the project (#42)

      • Integrated a new Github plugin (CircleCI) to the team repo

{you can add/remove categories in the list above}

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Deleting an item : delete

Deletes the item at the specified index.*
Format: delete INDEX

  • Deletes the item at the specified INDEX.

  • The index refers to the index number shown in the displayed list.

  • The index must be a positive integer 1, 2, 3, …​ The index is relative to what is displayed on the GUI rather than the actual index of the stored items.

*The item to be deleted depends on the current view state. If the user is currently viewing a list of expenses, then delete will delete the expense specified by index. If the user is currently viewing a list of budgets, then delete will delete the budget specified by index.

Examples:

While viewing list of expenses

  • listDefaultExpenses
    delete 2
    Deletes the second expense in the default expense list in MYMorise.

  • find n/Coffee
    delete 1
    Deletes the first expense in the results of the find command.

While viewing list of budgets

  • listBudgets
    delete 2 Deletes the second budget in the budget list in MYMorise.

An example is provided to show how the Delete command will result after the call when user is viewing the default expense list.

Before calling Delete:

BeforeDeleteUI

After calling Delete:

AfterDeleteUI

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

PROJECT: PowerPointLabs


{Optionally, you may include other projects in your portfolio.}