Luís Murta 638b833c74
ImportCommand and Serializable types
The new command ImportCommand takes a Serializable type, from which it
can call the deserialize method to generate a DB ORM type. The
Serializable interface also declares the serialize method.

(De)serialization moved to the ORM types, due to the inability to
properly use overloading.
Possible improvement for the future is to merge serialization
information on JSONDecoder/Encoder classes.

Adds a MockClient with the in-memory SQLite DB which can be used by
tests.
Most types export/import functionally tested using two DBs and comparing
entries.
2024-01-22 21:49:56 +00:00
2023-04-13 18:38:07 +01:00
2023-04-29 20:20:16 +01:00
2023-04-12 19:12:03 +01:00
2024-01-22 21:47:47 +00:00
2024-01-22 21:47:47 +00:00
2022-03-09 22:02:55 +00:00

Personal Finance Budget (pfbudget)

parse -> categorize -> analyze (predict) -> present

Parse

Parses bank extracts, based on parsers.yaml, to a SQLite database.

Categorize

Categorizes transactions based on categories.yaml configuration.

Reserved categories and groups

There is 1 special category and 2 reserved groups.

The Null category represent transactions performed between banks/credit cards, that would otherwise appear in the reports and graph. This way, these transactions, while real, are shadowed from the information presented. The net effect of these transaction, if performed in the same month would be moot anyway, since they cancel each other, but could introduce visual pollution when separated for a few days, especial when spawning through different months. The Null category then present a placeholder category for these transactions, as well as a way to preserve them out of side. ToDo: As a side bonus, whenever these don't cancel eachother, a warning could be shown.

The 2 reserved groups are income and investment. The income is used for all income categories. These are the ones that will have a net effect on the overall balance of the individual, and are normally expected to be shown against expenses. The investment group is separated from the remaining expenses, has these might not only present in absolute terms much higher values than other categories, but will also be subject to a different treatment when market predictions are incorporated.

Analyze (ToDo)

Analyzes previous transaction and predicts future expenses.

Present

Create graphs and reports

  1. Monthly spending from everyday purchases
  2. Networth with big expenses tagged in (ToDo)
  3. Future trajectory with predictable costs included (ToDo)

ToDo

  • Support regular transactions from fixed group in categories
  • Add one table for user inputed transactions and other for fixes
  • Predicting future expenses
  • Finish writing the README.md
  • Implement undo/redo feature in sqlite3 database
  • Allow for the possibility to create a new parser during runtime by guessing from transaction list/user input
  • Allow for transaction to be passed as argument to main.py
Description
A budgeting tool for those who want full control and transparency over their finances.
Readme 1.4 MiB
Languages
Python 99.8%
Mako 0.2%