I thought YNAB was nice when I used it. However not everyone feels comfortable entering bank credentials on a third party website. Also, not everyone wants to spend their time maintaining a stateful database. In my view historical transactions should be immutable, it's the interpretation of the data that I should be fiddling with by hand. I had some spare time so started working on my ideal budgeting tool that is more like a pipeline, that fetches the relevant account data, applies some scriptable transformations, then outputs a static website with charts & spending breakdown. Besides the architecture, the most important feature to me is that with some prodding it's capable of stitching together account statements into something more like a graph representation where there are no negative transfers, only movements from one named account to another. That allows for a more realistic birds-eye view of what's going on than one would get by viewing any account in isolation.
The project isn't quite where I want it to be, but it's getting close. The next thing to improve is support for banks that only allow users to download an N month window of transactions. Probably I will save each download to a timestamped file then merge them in-memory before the next stage in the pipeline. The source code for all of this is here: github.com/tmerr/bank_wrangler. I don't expect it to be useful for anyone else verbatim but it might give you some ideas or something to fork from. Disclaimer: banks might not be happy about web scraping / using undocumented APIs, so don't mindlessly fetch data without understanding that risk.
Comments
I thought YNAB was nice when I used it. However not everyone feels comfortable entering bank credentials on a third party website. Also, not everyone wants to spend their time maintaining a stateful database. In my view historical transactions should be immutable, it's the interpretation of the data that I should be fiddling with by hand. I had some spare time so started working on my ideal budgeting tool that is more like a pipeline, that fetches the relevant account data, applies some scriptable transformations, then outputs a static website with charts & spending breakdown. Besides the architecture, the most important feature to me is that with some prodding it's capable of stitching together account statements into something more like a graph representation where there are no negative transfers, only movements from one named account to another. That allows for a more realistic birds-eye view of what's going on than one would get by viewing any account in isolation.
The project isn't quite where I want it to be, but it's getting close. The next thing to improve is support for banks that only allow users to download an N month window of transactions. Probably I will save each download to a timestamped file then merge them in-memory before the next stage in the pipeline. The source code for all of this is here: github.com/tmerr/bank_wrangler. I don't expect it to be useful for anyone else verbatim but it might give you some ideas or something to fork from. Disclaimer: banks might not be happy about web scraping / using undocumented APIs, so don't mindlessly fetch data without understanding that risk.