WheresMyMoney allows you to keep track of your spending habits and trends with various supporting tools and functionalities.
java -jar tp.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: /valuelist) oraddAdds 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 foodadd /price 1 /description bus ride /category transport /date 01-10-2024editEdits 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 foodedit 2 /price 3.40deleteDeletes an expense from the system.
Format: delete INDEX
You can use the list command to see the corresponding index.
Example: delete 2
listDisplays 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
>
statsProvides 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:
1. CATEGORY: food, DESCRIPTION: chicken rice, PRICE: 4.50, DATE ADDED: 09-11-2024
LOWEST EXPENSE:
1. CATEGORY: food, DESCRIPTION: chicken rice, PRICE: 4.50, DATE ADDED: 09-11-2024
MEAN PRICE: 4.5
>
visualizeDisplays 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:
visualizevisualize /from 01-02-2024 /category foodsetAllows 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
helpLists 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:
addeditdeletelistTo 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.
addAdds 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 dailyadd /recur /price 15 /description Spotify /category subscription /date 01-10-2024 /frequency monthlyeditAllows 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 foodedit 2 /recur /price 3.40 /frequency monthly /date 02-10-2024deleteDeletes a recurring expense. Use list /recur to find the corresponding index.
Format: delete INDEX /recur
Notes:
Example: delete 2 /recur
listUse 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
saveSaves 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.loadLoads 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] |