By: Team AY1920S2-CS2103-T09-3 Since: Feb 2020 Licence: MIT

1. Product Overview

ExpenseLa is for money-conscious NUS students who wish to track their spending, in order to make better informed decisions when it comes to saving money. ExpenseLa maintains a record of your daily incoming and outgoing transactions to constantly keep track of your finances! ExpenseLa is optimized for those who prefer to work with a Command Line Interface (CLI) while still enjoying the benefits of having a Graphical User Interface (GUI). If you want a simple, no-frills expense tracker, look no further than ExpenseLa!

2. Quick Start (Hubert Halim)

  1. Ensure you have Java 11 or above installed in your Computer.

  2. Download the latest expensela.jar here.

  3. Copy the file to the folder you want to use as the home folder for your ExpenseLa.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    Ui
  5. The UI has 5 different components: Command Input box, Command Result box, Monthly Data panel Filter panel and Transaction List panel(Chart Analytics Panel)

    UI annotated
  6. Filters are only to filter transaction list and chart analytics, MonthlyData is data for the current month and not the month shown in the filter. So filter does not apply to MonthlyData.

  7. Type the command in the command box and press Enter to execute it.
    e.g. typing help and pressing Enter will open the help window.

  8. You can navigate through your command history by pressing the Up or Down arrow key. Only successful commands are stored in the command history. There can be at most 50 commands stored. This feature is just like the command navigation feature in your favourite command line or shell.

  9. An example command sequence you can try:

    • clear : clear the expenseLa app to start at a clean slate

    • budget b/1000 rc/ : set a recurring budget of $1000 for the current month and subsequent months

    • add i/ c/Income n/salary a/2500 d/2020-04-02 rc/ : adds a recurring income with amount $2500.00

    • add a/100n/Wagyu Steak c/FOOD : adds an expense named Wagyu Steak with amount $100.00 spent on the day it is added in category FOOD to the expense tracker

    • add a/10n/Laksa c/FOOD : adds an expense named Laksa with amount $10.00 spent on the day it is added in category FOOD to the expense tracker

    • add a/5.5n/Chicken Rice c/FOOD : adds an expense named Chicken Rice with amount $5.50 spent on the day it is added in category FOOD to the expense tracker

    • add a/50n/shirt c/SHOPPING d/2020-04-08 : adds an expense named shirt with amount 50.00 spent on 2020-04-08 in category SHOPPING to the expense tracker

    • filterc/FOOD m/2020-02 : filters to only show transactions made on 2020-02 with category FOOD

    • delete1 : deletes the expense with id 1 in the current list

    • exit : exits the app

  10. Refer to Section 3, “Features Present” for details of each command.

3. Features Present

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in filter c/OBJECT, OBJECT is a parameter which can be used as filter c/FOOD.

  • Parameters are not case sensitive, but prefixes are

  • Items in square brackets are optional e.g spend a/AMOUNT n/ OBJECT [d/ DATE] [c/ CAT] and can used as add a/100 n/Pizza or add a/100 n/Pizza d/2020-02-02 c/Food

  • Parameters can be in any order e.g. if the command specifies n/NAME a/AMOUNT, a/AMOUNT n/NAME is also acceptable.

  • The length of command a user can input is at most 140 characters.

3.2. Set a monthly budget : budget (Hubert Halim)

Sets a spendable budget for the current month

Format: budget b/AMOUNT (to set a budget for the given month only) budget b/AMOUNT rc/ (to set repeating budget of $AMOUNT for the coming months)

Example Usage:

  • budget b/1000 - set a non-recurring budget of $1000.00

    BeforeSetBudget
    AfterSetBudget
  • budget b/1500 rc/ - set a recurring budget of $1500.00

    BeforeSetBudget
    AfterSetRecurringBudget

3.3. Reset total balance resetbalance (Hubert Halim)

Reset Balance value to the total from the amount of all transactions in stored in the application so far. This command is used in case the user makes a mistake when editing the json file or there is an unhandled bug in the app that causes difference in the value of total balance and the net balance of all the transactions added together. This command will rectify that issue.

3.4. Key in transaction : add (Fheng Guo Jing, Benjamin)

Adds an expense or income to the expense tracker. Expenses/incomes are stored as transactions.

Format: add [i/] n/ NAME a/ AMOUNT [d/ DATE] [c/ CATEGORY] [r/ REMARK] [rc/]

Expected Outcome: A new transaction would be created in the list of transactions. If the newly created transaction is part of the currently filtered transaction, it’ll be visible in the list

Leaving the DATE option blank will auto fill with today’s date
Leaving the CATEGORY option blank will auto fill with 'MISC' category
Not including i/ will make transaction an expense by default while including i/ will make it an income
Including rc/ will make transaction recurring every month on the same day set in the transaction date

Examples:

  • add a/ 26.00 n/ Grab Share d/ 2020-02-19 c/ TRANSPORT

  • add a/ 16.00 n/ Pizza r/ Lunch c/ FOOD

  • add i/ a/ 200.00 n/ pocket money c/INCOME rc/

3.5. Filter transactions : filter (Pang Kim Jin)

Filters transactions for user to view specific transactions according to the filter type. Upon application launch the preset filter is for all transactions in the current month as depicted below:

Filter

Format: filter c/CATEGORY m/YYYY-MM

Expected Outcome: Filter is changed to the filter specified. List of transactions will only show transactions that fulfill the filter criteria.

If only 1 filter type is specified (either category or month), the other filter type will automatically be set to "ALL".

Examples:

  • filter m/2020-04 - show transactions in April 2020 across all categories

  • filter c/TRANSPORT - show transactions with category "TRANSPORT" across all months

  • filter c/FOOD m/2020-04 - show transactions with category "FOOD" in April 2020

  • filter c/ALL m/ALL - show all transactions

3.6. Deleting a transaction : delete (Fheng Guo Jing, Benjamin)

Deletes the specified transaction from the expense tracker.

Format: delete TRANSACTION_ID

Expected Outcome: Transaction at the specified index in the current transaction list is deleted

TRANSACTION_ID refers to the index of the transaction in the list visible to user.

Examples:

  • delete 3
    Deletes the transaction with index number 3 in the expense tracker’s current transaction list.

3.7. Edit a transaction : edit (Fheng Guo Jing, Benjamin)

Edit the specified transaction from the expense tracker

Format: edit TRANSACTION_ID [n/ NAME] [a/ AMOUNT] [d/ DATE] [c/ CAT] [r/ REMARK]

Expected Outcome: Transaction at the given index has its parameters changed as specified

Examples:

  • edit 1 a/ 26.00 n/ Grab Share d/ 2020-02-19 c/ TRANSPORT

  • edit 2 a/ 16.00 n/ Pizza c/ FOOD

  • edit 3 a/ 200.00 n/ pocket money

3.8. Analysis of transactions : toggleview (Choi Min Suk + Pang Kim Jin)

Toggle between viewing list of transactions and analytics with bar graph and pie chart to show expense trend.

If filter is set to a specific month, the bar graph displays the transactions by day of the week. If filter is set to all months, bar chart will display transactions by month for current and previous year. The pie chart will show the transactions by the different categories according to the filter.

Expected Outcome: changed view to charts if previously was list view and to list view if previously was chart view.

ListView
ChartView
ToggleView and BarChart by Choi Min Suk and PieChart by Pang Kim Jin

3.9. Find transaction by name : find

Find Transaction that matches one of the words from a given list of keywords

Format: find KEYWORD_1 [KEYWORD_2] …​ [KEYWORD_N]

Expected Outcome: Clears all filter and display all transactions whose name matches any of the keyword

Examples:

  • find bottle school (find all transactions whose name contain either bottle or school)

3.10. List of transactions : list

List all transactions and reset all filters

3.11. Clear all recurring transactions stored : clearrecurring (Fheng Guo Jing, Benjamin)

Clear all recurring transactions stored

Expected Outcome: All recurring transactions in the json file GlobalData.json will be cleared

3.12. Export transaction data to csv : export (Choi Min Suk)

Export the filtered transaction list to a csv file

Expected Outcome: A csv file will be created at the root directory and all transactions currently visible in the app will be exported to the csv file.

Csv

3.13. Import transaction data from csv : import (Fheng Guo Jing, Benjamin)

Import transactions from csv and add it to transaction list, duplicate transactions are ignored.

Csv File has to be in the same directory as the jar file in order for it to read. import has to be accompanied by the [filename].csv in order to import. Transactions in the csv file have to be of the same format as the above table format in 3.12 (export).

Expected Outcome: All transactions in the csv that is in the correct format and does not exist in the current transaction lsit will be added to transaction list

Examples:

  • import transactions.csv (imports all transactions from transactions.csv folder)

3.14. Clear all data : clear (Hubert Halim)

Clear all data in ExpenseLa including monthly data and global data

Expected Outcome: All transactions are deleted, balance is set to 0 and monthly data is also set to 0. All recurring data such as budget and transactions are also cleared

3.15. Exiting the program : exit

Exits the program.

Format: exit

3.16. Saving the data

ExpenseLa data are saved in the hard disk automatically as a json file after any command that changes the data.
There is no need to save manually.

3.17. Data Encryption [coming in v2.0] (Pang Kim Jin)

With the AES-256 encryption, ExpenseLa ensures that the sensitive information you have provided is safe from outside prying eyes, and this is all done without any additional effort from the user.

3.18. ExpenseLa Statement Statement [coming in v2.0] (Pang Kim Jin)

With the ability to generate your personalised ExpenseLa statement, you will be able to export all your expenses, income, budget, and balance information into a pdf document. Using ExpenseLa’s Filter command, you will be able to selectively include which transactions to make your statement tailored to your needs.

4. FAQ

Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Expense Tracker folder.

5. Command Summary

  • Budget : budget b/ AMOUNT
    budget rc/ b/ AMOUNT
    e.g. budget b/ 1000
    budget b/ 1500 rc/

  • add : add a/ AMOUNT n/ NAME [d/ DATE] [c/ CATEGORY] [r/ REMARK] [rc/]
    e.g. add a/ 26.00 n/ Grab Share d/ 2020-02-19 c/ TRANSPORT
    add a/ 16.00 n/ Pizza r/ Lunch c/ FOOD
    add i/ a/ 200.00 n/ pocket money c/INCOME rc/

  • Filter : filter m/YYYY-MM
    filter c/CATEGORY
    e.g. filter m/2020-02
    filter c/FOOD
    filter c/TRANSPORT m/2020-03
    filter c/ALL m/ALL

  • Find : find KEYWORD [MORE_KEYWORDS]
    e.g. find pizza
    find hawaiian wood fired pizza

  • Delete : delete TRANSACTION_ID
    e.g. delete 3

  • Edit : edit TRANSACTION_ID [n/ NAME] [a/ AMOUNT] [d/ DATE] [c/ CAT] [r/ REMARK]
    e.g. edit 1 a/ 26.00 n/ Grab Share d/ 2020-02-19 c/ TRANSPORT
    edit 2 a/ 16.00 n/ Pizza c/ FOOD
    edit 3 a/ 200.00 n/ pocket money

  • Toggle View : toggleview

  • Reset Balance: resetbalance

  • Clear: clear

  • Exit: exit

  • List : list

  • Export : export

  • Import : import [FILENAME].csv

  • Clear Recurring Transactions: clearrecurring

  • Help : help