Description
I've been using beancount+fava for over a year now with great success.
However having started my personal finance journey with envelop budgeting, and later on the various iterations of YNAB before it became a hosted service, I really miss the month-by-month budgeting to interface that YNAB made famous (example from YNAB4).
I want to implement this interface into my beancount+fava workflow, but the question is how/where the extra data should be stored. Martin does not see budgeting as a core-feature for beancount, which I understand and respect. I've toyed with fava's budget feature, but just find myself missing this particular interface. The workflow of allocating all your available funds to a budget on a month by month basis is very powerful. Being able to visualize the budgets in that tabular view and tweak the numbers slightly and receive instant feedback is exactly what I am missing.
The key change that this interface would introduce to the current status quo is the creation of novel data from an interface rather than from editing the ledger file directly. The fact that beancount and fava are read-only tools is very powerful, and I'm hesitant to upset this state of affairs. (edit: I forgot that fava does in fact allow editing of the beancount file from within itself, so perhaps this isn't such a terrible idea?)
I want to get the fava community's feedback on how best to implement this budgeting tool. Fava already presents a great API for reading/querying transactions from the ledger and provides a core set of primitives that the budgeting tool could build on.
Should such a tool be implemented in fava? Or should it be entirely separate? Could it be structured as some sort of optional addon/plugin module? Perhaps the answer is that I shouldn't build it on fava at all, and do it separately as another external tool.
As for data persistence, I think introducing a companion file is the best method, rather than shoehorn it into beancount. This would involve a workflow where one works with beancount/fava on their existing .beancount
file while also maintaining a new .budget
file alongside. Whether this is a plain text file with a new format, or a structured file such as sqlite, remains an open question.
That said, fava's custom budget directive could work to power the budget interface. But then after making changes in the budget UI, how to propagate those changed directive lines back to the beancount ledger? The tool could output a patch file that you apply to your ledger, or simply output a block of budget transactions to be copy/pasted.
Very curious to hear your thoughts!
Activity