Skip to content

ignazioc/MoneyManager

Repository files navigation

Moneymanager

This is ruby app I wrote to help me managing my personal finance. My needs are quite basic:

  • Review all the bank transactions to find any fraud or issue
  • Tags the important expenses and incomes to monitor the trend overtime

I wrote my own tool instead of using MoneyWiz because I like writing ruby code and all the commercial apps are overcomplicated for me

Features

  • Import transactions from a CSV - CAMT file. I'm not sure about your bank, but SparkasseBerlin has this option.
  • The import process is idempotent, the already imported transactions are just skipped.
  • Print the list of transacions.
  • Review the transaction and put a checkmarks on the approved ones.
  • Tag the transactions
  • Analize the transaction with the reports

Reports

  • Total income
  • Total expense
  • All incomes grouped by category
  • All expenses grouped by category
  • All the entries with a specific tag
  • Trend of tag overtime

Why you shouldn't use this

  • Probably your needs are different from mine.
  • The database is just a plain, non-encrypted file.
  • There are no fancy charts (so far)

Usage

Install the gem

$ gem install moneymanager

Import your CSV FILE

$ mm add exported.csv
Parsed:   99
Skipped:   0
Inserted: 99
# If executed twice, the entries are not duplicated
$ mm add exported.csv
Parsed:   99
Skipped:  99
Inserted: 0

Print the transactions

By default all the transactions are printed. A month can be specified with the --month parameter

$ mm print
+-----+----------+--------------+----------------------------------------------------+-------------+
| ✔/✖︎ | Date     | Tag          | Reason                                             | Amount      |
+-----+----------+--------------+----------------------------------------------------+-------------+
|  ✖︎︎  | 17/08/01 |              | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✖︎  | 17/08/01 |              | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✖︎  | 17/08/01 |              | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✖︎  | 17/08/01 |              | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✖︎  | 17/08/01 |              | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✖︎  | 17/08/02 |              | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✖︎  | 17/08/31 |              | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
+-----+----------+--------------+----------------------------------------------------+-------------+

Review and approve the transactions

Flag all the approved transaction.

$ mm review
+----------+------------------------------------------------------+
| Date     | 2017-08-01                                           |
| Reason   | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎   |
| Amount   | -999.0 €                                             |
| Company  | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎   |
| Approved | ✖                                                    |
| Tag      |                                                      |
+----------+------------------------------------------------------+
Do you recognize? (Use arrow keys, press Enter to select)
‣ yes
  no
  skip
  abort

Tag each transaction

Assign a tag to a transaction. To generate hierarchy of tags, use a / like Car/Insurance

$ mm tag
+----------+------------------------------------------------------+
| Date     | 2017-08-01                                           |
| Reason   | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎   |
| Amount   | -99.0 €                                              |
| Company  | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎   |
| Approved | ✔︎                                                    |
| Tag      |                                                      |
+----------+------------------------------------------------------+
Do you want add a tags? (Use arrow keys, press Enter to select)
‣ 1. Skip
  2. Abort
  3. Create
  Car/Gasoline
  Car/Insurance
  Car/Tire
  Heating
  Mortage

Enjoi the list of transaction

$ mm print
+-----+----------+------------------------+--------------------------------------------------+-------------+
| ✔/✖︎ | Date     | Tag                    | Reason                                           | Amount      |
+-----+----------+------------------------+--------------------------------------------------+-------------+
|  ✔︎  | 17/08/01 | ◼◼◼◼◼◼ Censored ◼◼◼◼◼◼ | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✔︎  | 17/08/01 | ◼◼◼◼◼◼ Censored ◼◼◼◼◼◼ | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✔︎  | 17/08/01 | ◼◼◼◼◼◼ Censored ◼◼◼◼◼◼ | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✔︎  | 17/08/31 | ◼◼◼◼◼◼ Censored ◼◼◼◼◼◼ | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✔︎  | 17/08/31 | ◼◼◼◼◼◼ Censored ◼◼◼◼◼◼ | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✔︎  | 17/08/31 | ◼◼◼◼◼◼ Censored ◼◼◼◼◼◼ | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✔︎  | 17/08/31 | ◼◼◼◼◼◼ Censored ◼◼◼◼◼◼ | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
+-----+----------+------------------------+--------------------------------------------------+-------------+

Mark a transaction as bank transfer in order to be skipped on the normal reports

The edit command supports only one option so far.

$ mm edit --entry c88f92
Select one option: (Use arrow keys, press Enter to select)
‣ Toggle banck transfer state

Reporting

Total (Incomes or Expenses)

Print the total of the incomes or expenses on the whole archive or on the selected month

$ mm report --month 8

$ mm report --month 8
Which type of report? (Use arrow keys, press Enter to select)
‣ Total (Incomes)
  Total (Expenses)
  All Incomes
  All Expenses
  Specific Tag
  Specific Tag (grouped by month)


Which type of report? Total (Incomes)
+-----------+
| 99999.0 € |
+-----------+

All Incomes/Expenses

Print the list of all the incomes (or expenses) grouped by tag. The entries without a tag are grouped into the Unknown tag.

 $ mm report
Which type of report? (Use arrow keys, press Enter to select)
  Total (Incomes)
  Total (Expenses)
‣ All Incomes
  All Expenses
  Specific Tag
  Specific Tag (grouped by month)

  

Which type of report? All Incomes
+--------------+----------+
| Kindergeld   |  999.0 € |
| Salary       |  999.0 € |
| Investments  | 9999.0 € |
| Stockoptions | 9999.0 € |
| Unknown      |  999.0 € |
+--------------+----------+
|             9999999.0 € |
+--------------+----------+

One tag grouped by month

Print al list in which the entries with the selected tag are grouped by month. This is the report you want to use to understand if your heating bill is becoming bigger overtime.

 $ mm report
Which type of report? (Use arrow keys, press Enter to select)
  Total (Incomes)
  Total (Expenses)
  All Incomes
  All Expenses
‣ Specific Tag
  Specific Tag (grouped by month)

Select a tag. (Use arrow keys, press Enter to select)
‣ Heating
  Mortage
  Car/Gasoline
  Car/Insurance
  Car/Tire

Select a tag. Heating
+-----+----------+---------+--------------------------------------------------+-------------+
| ✔/✖︎ | Date     | Tag     | Reason                                           | Amount      |
+-----+----------+---------+--------------------------------------------------+-------------+
|  ✔︎  | 17/08/01 | Heating | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✔︎  | 17/08/01 | Heating | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
|  ✔︎  | 17/08/31 | Heating | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € |
+-----+----------+---------+--------------------------------------------------+-------------+

One tag grouped by month

Print al list in which the entries with the selected tag are grouped by month. This is the report you want to use to understand if your heating bill is becoming bigger overtime.

 $ mm report
Which type of report? (Use arrow keys, press Enter to select)
  Total (Incomes)
  Total (Expenses)
  All Incomes
  All Expenses
  Specific Tag
‣ Specific Tag (grouped by month)

Select a tag. (Use arrow keys, press Enter to select)
‣ Heating
  Mortage
  Car/Gasoline
  Car/Insurance
  Car/Tire

Select a tag. Heating
+-----------+---------+
| August    | -99.0 € |
| September | -99.0 € |
+-----------+---------+
|            -198.0 € |
+-----------+---------+

One tag grouped by month

If you're moving some money to/from a different account of yours, the related entries should be marked as "bank transfer" in order to not compromise your income/expense reports. This specific report can be used to print only the bank transfers entries

Which type of report? (Use arrow keys, press Enter to select)
‣ Total (Incomes)
  Total (Expenses)
  All Incomes
  All Expenses
  Specific Tag
  Specific Tag (grouped by month)
  Bank transfers

 +-----+---+----------+--------+-------------------------------------------------+--------------+--------+
 | ✔/✖︎ | ♻︎ | Date     | Tag    | Reason                                          | Amount       | SHA1   |
 +-----+---+----------+--------+-------------------------------------------------+--------------+--------+
 |  ✔︎  | ♻︎ | 01/01/17 | Invest | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € | 2949af |
 |  ✔︎  | ♻︎ | 01/02/17 | Invest | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € | 002862 |
 |  ✔︎  | ♻︎ | 01/03/17 | Invest | ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼ C E N S O R E D ◼◼◼◼◼◼◼◼◼◼◼◼◼◼◼︎ |  99999.99 € | c88f92 |
 +-----+---+----------+--------+-------------------------------------------------+--------------+--------+

To do

  • Filter by one single entry
  • Report for one tag splitted by month
  • Add a backup options
  • Exclude account transfers from the list of expenses/incomes
  • Report for nested tags ( Car/Gasoline, Car/Insurance etc)
  • Multiple tags
  • Manage multiple bank account
  • Print fancy chart in html
  • Add more parameters to directly generate the reports avoid the manual selection.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/ignazioc/moneymanager. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.