WheresMyMoney allows you to keep track of your spending habits and trends with various supporting tools and functionalities.
java -jar [CS2113-W12-3][WheresMyMoney].jar
command to run the application.SCREAMING_SNAKE_CASE
are user input fields./
are flags that need to be inputted for the programme to recognise the argument.[...]
indicate optional arguments. Refer to the specifications for each command.<command> /argument value 1 and 2
-> argument
: value 1 and 2
<command> main value
-> main
: main value
(The main argument is the value following the command, such as INDEX
in delete INDEX
)/
) into an argument, make sure to escape it with \
.
<command> /argument \/value
-> argument
: /value
list
) oradd
Adds an expense to the tracker.
Format: add /price PRICE /description DESCRIPTION /category CATEGORY [/date DATE]
Notes:
PRICE
is a positive decimal number.DESCRIPTION
and CATEGORY
are text.DATE
is optional and formatted as DD-MM-YYYY
.
If no DATE
is specified, it will be defaulted to the current (system) date.Examples:
add /price 4.50 /description chicken rice /category food
add /price 1 /description bus ride /category transport /date 01-10-2024
edit
Edits an existing expense.
Format: edit INDEX [/price PRICE] [/description DESCRIPTION] [/category CATEGORY] [/date DATE]
Notes:
INDEX
is an integer. You can use the list
command to find the corresponding index.PRICE
is a positive decimal number.DESCRIPTION
and CATEGORY
are text.DATE
takes a text format of DD-MM-YYYY
.INDEX
are optional. You can specify only edited attributes.edit INDEX
(i.e. blank optional parameters) has no effect.Examples:
edit 1 /price 5.50 /description chicken rice /category food
edit 2 /price 3.40
delete
Deletes an expense from the system.
Format: delete INDEX
You can use the list
command to see the corresponding index.
Example: delete 2
list
Displays all expenses with an optional filter.
Format: list [/category CATEGORY] [/from FROM_DATE] [/to TO_DATE]
Notes:
CATEGORY
is text.FROM_DATE
and TO_DATE
are dates in DD-MM-YYYY format.FROM_DATE
and TO_DATE
are both inclusive of given date.Example:
> list
1. CATEGORY: food, DESCRIPTION: chicken rice, PRICE: 4.50, DATE ADDED: 09-11-2024
2. CATEGORY: transport, DESCRIPTION: bus ride, PRICE: 1.00, DATE ADDED: 01-10-2024
> list /category food /from 02-11-2024 /to 09-11-2024
1. CATEGORY: food, DESCRIPTION: chicken rice, PRICE: 4.50, DATE ADDED: 09-11-2024
>
stats
Provides statistics for expenses according to specified filters.
Format: stats [/category CATEGORY] [/from FROM_DATE] [/to TO_DATE]
Notes:
CATEGORY
is text.FROM_DATE
and TO_DATE
are dates in DD-MM-YYYY format.FROM_DATE
and TO_DATE
are both inclusive of given date.Example:
> stats /category food /from 02-11-2024 /to 09-11-2024
HIGHEST EXPENSE:4.5
2. CATEGORY: food, DESCRIPTION: chicken rice, PRICE: 4.50, DATE ADDED: 04-11-2024
LOWEST EXPENSE:4.5
2. CATEGORY: food, DESCRIPTION: chicken rice, PRICE: 4.50, DATE ADDED: 04-11-2024
TOTAL EXPENSES: 27.0
AVERAGE PRICE: 4.5
>
visualize
Displays a bar graph showing your total expenditure over time, filtered by certain criteria.
Format: visualize [/category CATEGORY] [/from FROM_DATE] [/to TO_DATE]
Notes:
CATEGORY
is text.FROM_DATE
and TO_DATE
are dates in DD-MM-YYYY
format.Note that this command currently has a time span limit of 1080 days
(approximately 36 months). Exceeding this limit will return an error.
Examples:
visualize
visualize /from 01-02-2024 /category food
set
Allows you to set a spending limit for each category. If this limit is exceeded (or nearly exceeded), you will receive warnings from the app.
Format: set /category CATEGORY /limit LIMIT
Example: set /category food /limit 100
help
Lists the command formats that the app recognises.
Format: help [/recur] [/method METHOD]
Notes:
METHOD
is text.METHOD
exists in our app./recur
flag to get information on the methods for recurring expensesExamples:
help
lists all commands the app has since METHOD
is not specified.help /method add
lists format of the “add” command since METHOD
is specified.help /recur /method edit
lists format of the “edit” command since /recur
and METHOD
are specified.> help /method add
Use the add command to add an expense.
Format: add /price PRICE /description DESCRIPTION /category CATEGORY [/date DATE]
Notes:
- PRICE is a decimal number.
- DESCRIPTION and CATEGORY are text.
- DATE is a string in DD-MM-YYYY format.
- If no date is specified, it will be defaulted to the current date.
Examples: add /price 4.50 /description chicken rice /category food /date 01-01-2024
>
Recurring expenses allow you to automate adding expenses that occur on a regular basis.
Recurring expenses are saved to a separate recurringExpenseList
. They do not affect calculations and visualizations.
Recurring expenses share some of the same commands as normal expenses. Such as:
add
edit
delete
list
To use these command for recurring expenses, a /recur
flag must be added.
Only when you run the load
command will “normal expenses” added to the expense list.
add
Adds a recurring expense to the system.
Format: add /recur /price PRICE /description DESCRIPTION /category CATEGORY [/date DATE] /frequency FREQUENCY
Notes:
/recur
is a command flag indicating that the command is for a recurring expense.PRICE
is a positive decimal number.DESCRIPTION
and CATEGORY
are text.DATE
takes a text format of DD-MM-YYYY
. If no DATE
is specified, it will be defaulted to the current date.FREQUENCY
takes only 1 of 3 possible inputs: daily
, weekly
, or monthly
. Any other input will throw an error.save
and a load
command is used.
save
command is needed to register the recurring expense into the system.load
command is used to trigger the mechanism to add all other valid expenses according to the date specified. More details can be found in the Developer Guide.Examples:
add /recur /price 4.50 /description chicken rice /category food /frequency daily
add /recur /price 15 /description Spotify /category subscription /date 01-10-2024 /frequency monthly
edit
Allows you to edit a recurring expense.
Format: edit INDEX /recur [/price PRICE] [/description DESCRIPTION] [/category CATEGORY] [/date DATE] [/frequency FREQUENCY]
Notes:
INDEX
is an integer. Use the list
command to find the corresponding index./recur
is a command flag indicating that the command is for a recurring expense.PRICE
is a positive decimal number.DESCRIPTION
and CATEGORY
are text.DATE
takes a text format of DD-MM-YYYY
. If no DATE
is specified, it will be defaulted to the current date.FREQUENCY
takes only 1 of 3 possible inputs: daily
, weekly
, or monthly
. Any other input will throw an error.INDEX
and /recur
are optional. You can specify which attribute of the expense you want to edit.Examples:
edit 1 /recur /price 5.50 /description chicken rice /category food
edit 2 /recur /price 3.40 /frequency monthly /date 02-10-2024
delete
Deletes a recurring expense. Use list /recur
to find the corresponding index.
Format: delete INDEX /recur
Notes:
Example: delete 2 /recur
list
Use the list command to display recurring expenses according to specified filters.
Format: list /recur [/category CATEGORY] [/from FROM_DATE] [/to TO_DATE]
Notes:
/recur
is a command flag indicating that the command is for recurring expenses.CATEGORY
is text.FROM_DATE
and TO_DATE
are dates in DD-MM-YYYY
format.FROM_DATE
and TO_DATE
are both inclusive of given date.Examples: list /recur /category food /from 02-11-2024 /to 04-11-2024
save
Saves data to files and stores them in a directory of your choice.
Format: save [/expenseList EXPENSE_FILE_PATH] [/categoryInfo CATEGORY_FILE_PATH] [/recurringExpenseList RECUR_FILE_PATH]
Notes:
EXPENSE_FILE_PATH = "expenses_data.csv"
CATEGORY_FILE_PATH = "category_spending_limit.csv"
RECUR_FILE_PATH = "recurring_expenses_data.csv"
.csv
file. (e.g. they can save to expenses_data.txt
)Examples:
save
saves all data to the default paths.save /expenseList ./data.csv
saves only the expenseList to ./data.csv
.load
Loads data from files into the app.
Format: load [/expenseList EXPENSE_FILE_PATH] [/categoryInfo CATEGORY_FILE_PATH] [/recurringExpenseList RECUR_FILE_PATH]
Notes:
EXPENSE_FILE_PATH = "expenses_data.csv"
CATEGORY_FILE_PATH = "category_spending_limit.csv"
RECUR_FILE_PATH = "recurring_expenses_data.csv"
.csv
files (e.g. they can load from expenses_data.txt
)Examples:
load
loads data from the default paths.load /expenseList ./data.csv
loads only the expenseList from ./data.csv
.Q1: How do I transfer my data to another computer?
A1: You can save your expenses to a .csv
file, which you can then transfer and load on another computer
Q2: Can I only update limits (via the set command)? What about adding, deleting or viewing?
A2: In short, yes.
Q3: Why don’t my total expense per category reset at the start of every month?
A3: The backend currently does not support different totals per month, but it will be implemented soon.
Q4: Why does my total expenditure for this category not exactly match what I’ve calculated? / Why does the alerts/warnings show up even though my total is not yet nearing or exceeding the limit?
A4: The backend uses floats to represent prices, which may cause inaccuracies of about 1 cent.
Command | Format |
---|---|
Add Expense | add /price PRICE /description DESCRIPTION /category CATEGORY [/date DATE] |
Edit Expense | edit INDEX [/price PRICE] [/description DESCRIPTION] [/category CATEGORY] [/date DATE] |
Delete Expense | delete INDEX |
List Expenses | list [/category CATEGORY] [/from FROM_DATE] [/to TO_DATE] |
Get Statistics | stats [/category CATEGORY] [/from FROM_DATE] [/to TO_DATE] |
Visualize Expenditures | visualize [/category CATEGORY] [/from FROM_DATE] [/to TO_DATE] |
Set Spending Limit for a Category | set /category CATEGORY /limit LIMIT |
View Help | help [/recur] [/method METHOD] |
Save Expenses to a File | save [/expenseList EXPENSE_FILE_PATH] [/categoryInfo CATEGORY_FILE_PATH] [/recurringExpenseList RECUR_FILE_PATH] |
Load Expenses from a File | load [/expenseList EXPENSE_FILE_PATH] [/categoryInfo CATEGORY_FILE_PATH] [/recurringExpenseList RECUR_FILE_PATH] |
Add Recurring Expense | add /recur /price PRICE /description DESCRIPTION /category CATEGORY /date DATE /frequency FREQUENCY |
Edit Recurring Expense | edit INDEX /recur [/price PRICE] [/description DESCRIPTION] [/category CATEGORY] [/date DATE] [/frequency FREQUENCY] |
Delete Recurring Expense | delete INDEX /recur |
List Recurring Expenses | list /recur [/category CATEGORY] [/from FROM_DATE] [/to TO_DATE] |