120

This page aims to showcase my contributions to the project In-Credit-Ble under module CS2103T. I will be giving you an introduction to In-Credit-Ble, followed by summarising my contributions. Lastly, I will be showing you the relevant sections of User Guide (UG) and Development Guide (DG) that I documented.

This project was developed with the following utilities:

65
70
66
67
66

PROJECT: In-Credit-Ble (Finance Tracker)

Overview

In-Credit-Ble is a desktop application designed to help university students who have difficulty managing their finances due to their many daily transactions. It is also important for these students to manage their finances due to their inflexibility to spend frivolously as they lack a formal income.

In-Credit-Ble provides you with features such as having a budget bar to show how much you have spent compared to a budget that you have previously set, and showing of a summary of your transactions in a pie chart. Our user-friendly interface will make it easier for you to see how much you can safely spend within your budget and be more aware of your spending habits. If you are an individual who prefers to type using a Command Line Interface(CLI), then In-Credit-Ble is the application for you!

As part of the module requirement, my team and I (of 5 students from NUS) had to morph an existing application and develop a functional product in a short span of 13 weeks while learning new software engineering concepts. We have chosen to morph the existing application from an Address Book to a Finance Tracker. In the following sections, I will be summarising my contributions to this project through the major and minor features implemented for In-Credit-Ble.

Summary of Contributions

This section will give you a brief overview of my contributions to the project.

This section will be split into Major Enhancement, Minor Enhancements and Notable Contributions sub-sections.

  • It would help you greatly to head on to our Developer Guide and User Guide to find out more about our application including the list of features before reading on about my contributions to the project.

  • If you would like to download our application, head on to the Quick Start section of our User Guide for more information on how to do so.

Features Contributed to Project

Major enhancement: added CategoryBudget

  • What it does: Allows user to set a budget for categories so as to keep track of the expenses for each category (such as Food, Travel, Clothes).

  • Justification: This feature improves the product significantly and enhances user ability to manage their expenses according to categories. It allows users to categorise their spending to know which area he/she should start spending less. It also requires integration of the Logic, Model and UI components of the project.

  • Highlights of feature:

    • This enhancement can be triggered using the allocate command. Each of the category budget is stored in the TotalBudget class which is implemented in the Model component.

    • Each category budget can be shown to the user in the Result Display when the user executes the show command. It shows the current spending over the the total budget allocated for each individual category.

Minor enhancements

  • Changing Theme of Application

    • What it does: Allows user to change the colour theme of the application to pre-set themes such as Dark, Light, Blue, Pink.

    • Justification: This feature allows the user to have minor customisation of their In-Credit-Ble Finance Tracker Application

    • Highlights of feature:

      • This feature can be triggered using the theme command. Triggering this command will result in the UI component changing its stylesheet to fit the pre-set themes indicated by the user.

  • BudgetPanel of UI

    • What it does: Allows user to see the total spending against total budget so far in a visual progress bar. Depending on how close the total spending is to the total budget, the colour of the bar will change accordingly.

    • Justification: This feature will allows users to have a visual view of their total spending against their set budget

    • Highlights of feature:

      • This feature will be updated every time a user spend, edit the amount in the records, or delete a record

Other Contributions

Notable Contributions

  • Project Management/Team Tasks

    • Manging Issue Tracker

      • To see the issue trackers I managed, click here!

    • Set up and managed GitHub milestones and projects

      • Click here to view the Milestones and Project I managed

    • Changed product icon

    • Added Graphical User Interface Introduction section to User Guide

      • Click here to look at the GUI Introduction section.

Community

  • PR Reviews:

    • To view the Pull Requests reviewed by me, click here!

  • Forum Participation:

    • To view my participation in class forum, click here!

Code contributed

To see the code I contributed to In-Credit-Ble, click here! (Code kindly collated by Repo Sense)

Contributions to the User Guide

The next section will include my contribution to the User Guide. It showcases my ability in documenting a reader-friendly User Guide that is designed for the new users of In-Credit-Ble. It is important to be able to write a user-friendly guide that will allow new users to quickly grasp how to use our application.

Quick Start and Graphical User Interface

To allow users to get started with our application with ease, I’ve created the Quick Start and Graphical User Interface Introduction (GUI) sections.

Due to page limit constraints, I will only be listing a part of the Graphical User Interface Introduction. To see the rest of the contributions I made to the User Guide, click the below links.

Graphical User Interface Introduction


This section will explain to you the Graphical User Interface (GUI) of In-Credit-Ble Finance Tracker. The theme of the application has been set to Light, which is different from the start up theme Dark.

GUI Diagram
Figure 1. Graphical User Interface (When starting up)

There are a total of 7 elements in the Graphical User Interface in In-Credit-Ble Finance Tracker as denoted by the different coloured boxes above. The elements will be explained below.

Records List Panel

Record List Panel
Figure 2. Record List Panel: Shows a list of your expense records


This element is denoted by the yellow box.

In the Record List Panel, the list of all your expenditures are recorded here. This panel is scrollable to view all your expense records.

To find specific entries based on name, category or date, use the search command. To list all your expense records again after searching for particular records, use the command list.

Each record is tagged with an index number before the record name. The index is used in commands such as delete, edit and select.


Allocate, Show and Theme Commands

The following sections extracted from the User Guide are the instructions to users on how to use the features that I have implemented for this project. It includes the allocate, show and theme commands. These three sections show my ability to describe the feature in simple terms that new users are able to comprehend.

Due to page limit constraints, I will only be listing the major portion of my contribution. To see the full sections, click the below link.

1) theme command


Allocating budget based on categories: allocate

You can use this command to set a budget for a category in In-Credit-Ble Finance Tracker.

Alias: allo

Format: allocate $/AMOUNT c/CATEGORY

Examples:

  • allocate $/50 c/Dining

  • allocate $/100 c/CloThEs

  • allocate $/100.10 c/FOOD

  • allo $/123.10 c/GiRLfrIEND

  • Amount entered cannot be larger than 100,000,000.

  • Category name can only be one word (no spaces allowed).

  • If you provide multiple categories (e.g. allocate $/50.00 c/Food c/Clothes), only the last category you provided will be taken (in the previous e.g., the command will set budget for Clothes category. Your last category must be of the correct format (see below).

  • Category names are case-insensitive. (e.g. CLotHes, clothes and CLOTHES refer to Clothes).

  • If a budget was previously set for the category, the old category budget will be replaced by the new allocate command.

  • The category budget that you allocate should be more than current spending in that category as it would not make sense to set a budget that is below the amount that you have already spent on that category.

    For example, if you have spent $50.50 on the cateogry Food, you will receive an error message when you try to allocate $40.00 to the category Food.

  • Category name supplied must be alphanumeric and cannot contain special characters such as :<>;\/|?~^%$@#.

  • For you to see the category budgets and the current spending in each of the allocated category budget, use the show command shown in the next section.

You can still spend over the category budget set. The rationale is for you to be able to see how much you have exceeded your budget allocated in that category so that you will be able to better plan your expenditure in the future.
(For e.g. if you allocated $50.00 to Clothes and have yet to spend anything in the category, you can still spend more than $50.00 after setting the category budget.)

However, if you have already spent an amount in the category, but have yet to set a budget for the category, it would not make sense for you to set a budget smaller than the current spending in the category. Thus an error message will be shown in Result Display if you attempt to do so.

Showing allocated budget and spending in categories: show

You can use this command to see your current spending and the category budget allocated in In-Credit-Ble Finance Tracker.

Alias: showCatBudget

Format: show, showCatBudget

Example:

  • The following example will show you an example of what will be listed given the following budget allocation and expenditure in the following categories:

    • set $/500

    • allocate $/100 c/CloThEs

    • allocate $/100.10 c/FOOD

    • allo $/123.10 c/GiRLfrIEND

    • spend n/Buffet $/50.00 c/Food

    • spend n/Versace Jacket $/95.00 c/Clothes

    • spend n/Girlfriend gift $/99.99 c/Girlfriend

    • show

  • The following will be displayed on the Result Display
    (See Graphical User Interface Introduction (GUI) if you are unsure of the elements of the GUI):

show example
Figure 3. Example of show command
  • The category budgets will be shown with the latest allocated category budget in the Result Display.

  • If there are no category budgets allocated yet, the result display will display a message to let you know.

Contributions to the Developer Guide

The following section will include the sections of my contribution to the Developer Guide. It showcases my ability to write technical documentation and illustrates the technical depth of my code contributions. This is important in real-world software engineering projects where we are expected to work in teams. Being able to document the Developer Guide well will allow colleagues or other developers to understand our implementation better.

Due to page limit constraints, I will only be listing the major portion of my contribution. (Class Diagram + Sequence Diagram) To see the rest of the contributions I made to the DG, click the below link.

1) show implementation
2)theme implementation

Budget Class Diagrams

This group of features allows the user to set a total budget and allocate a portion of the total budget to different categories. The current spending will increase when records are added.

This implementation is under Logic, Model, Storage and UI Component.

The classes associated with Budget are shown in the class diagram below:

budget classdiagram
Figure 4. Class Diagram for Budget

The above diagram shows the structure of the classes associated with Budget. TotalBudget and CategoryBudget are sub-classes of Budget and TotalBudget can contain any number of CategoryBudget.

As seen in the class diagram, the CategoryBudget in TotalBudget is kept in a HashSet.


CategoryBudget Implementation

Allocating a budget to category

This feature allows user to set a category budget after the total budget is set.

Given below is a sequence diagram and step by step explanation of how Finance Tracker executes when a user sets a category budget.

AllocateSequenceDiagram
Figure 5. Sequence diagram of user setting a category budget
  1. User enters command allocate $/10 c/Food. The command is received by FinanceTrackerParser

  2. FinanceTrackerParser will then create a AllocateCommandParser Object and calls AllocateCommandParser#parse() method

  3. AllocateCommandParser#parse() method calls ArgumentTokenizer#tokenize() method to tokenize the user input String into arguments and prefixes in an ArgumentMultimap Object.

  4. AllocateCommandParser#parse() method then calls another method within the same class AllocateCommandParser#arePrefixesPresent() to check if there are any missing prefixes. If there are missing prefixes, ParseException will be thrown

  5. If no exceptions are thrown from the step 4, a new AllocateCommand object is created with the given arguments.

  6. Control is returned to LogicManager which then calls AllocateCommand#execute() method.

  7. AllocateCommand#execute() calls ModelManager#addCategoryBudget() method and control is transferred to ModelManager which is in the Model Component.

  8. ModelManager#addCategoryBudget() then calls FinanceTracker#addCategoryBudget() which then calls TotalBudget#setNewCategoryBudget().

  9. TotalBudget#setNewCategoryBudget() takes into account if there are any previous budget allocated to a category and if so, adds the expenses to the new budget assigned to the category.


Design consideration

Aspect: allocating Category Budget
  • Alternative 1 (current choice): Allocating Category Budget is done with only one command allocate

    • Pros: User only needs to make use of one command to control the budget of the category and will not be confused with too many other commands.

    • Cons: Requires the developer to ensure the application checks that if there is a current budget allocated to the same category, it should be reflected accordingly.

  • Alternative 2: Have two other commands increaseCatBudget and decreaseCatBudget to allow user to control the budget of the category

    • Pros: User is able to adjust the budget by increasing/decreasing the budget and error message will be shown. if the category was not previously allocated with a budget

    • Cons: User might be confused with too many commands and not intuitive.