This program helps you analyze your monthly and yearly expenses by giving answers to following questions:
- How much do you spend on average per month and year?
- How much would you be able to set aside each month for savings?
- What are the highest cost types, e.g. rent, car, food, etc.?
- Where are potentials to reduce costs?
Labeling is done in automatic fashion whenever a similar transaction is found in the database.
Three sample account statements can be found in folder cmd/expenses/resources/
.
Developed and tested on the following setup:
- macOS 10.15.2
- Go 1.13.4
- Docker 2.2.0.0
Consider that this program is not deployed as a Go module, because of building issues related to the Qt bindings.
So make sure to check out following library versions:
Package | Version |
---|---|
github.com/360EntSecGroup-Skylar/excelize | v2.0.2-0.20190924135319-a34d3b8c86d6 |
github.com/gonum/stat | v0.0.0-20181125101827-41a0da705a5b |
github.com/ryanuber/columnize | v1.1.2-0.20190319233515-9e6335e58db3 |
github.com/wcharczuk/go-chart | v2.0.2-0.20190910040548-3a7bc5543113 |
Run the particular build process for one of the hosts below:
make generate
make build
docker pull therecipe/qt:linux_debian_9
docker build -t expenses:latest -f Dockerfile.linux .
docker run --name expenses expenses:latest
docker cp expenses:/home/user/work/src/github.com/cfanatic/go-expenses/deploy/linux/go-expenses .
docker pull therecipe/qt:windows_64_static
docker build -t expenses:latest -f Dockerfile.win .
docker run --name expenses expenses:latest
docker cp expenses:/home/user/work/src/github.com/cfanatic/go-expenses/deploy/windows/go-expenses.exe .
Start the MongoDB database:
docker pull mongo:latest
docker run -d -p 27017:27017 --name transactions mongo:latest
Run the program.
Import each account statement and specify cost type labels for all transactions:
Show transaction details by hovering over Payee fields:
Exclude cost groups from statistical analysis by right-clicking on Label fields:
Analyze the monthly expenses for a particular account statement:
Show the complete analysis for all account statements which are available in the database: