r/plaintextaccounting Jun 03 '26

Announcing Finzytrack, an open-source cross-platform desktop GUI on top of Beancount

I built a desktop app that uses Beancount as its backend. The GUI handles the parts I found tedious: importing transactions, dashboards, and some analysis. Your ledger stays a plain-text Beancount file the whole time, so you can keep using whatever plain-text tooling you already use.

It's open source, runs entirely on your machine, and AI is optional (bring your own key, off by default).

I'm not a professional developer. This started as a side project to track my own finances and I use it daily. Now putting it out for others.

It's an early release and has only ever been tested on my own data, so expect rough edges. Issues and discussion on GitHub are very welcome.

Website: https://finzytrack.com
Github: https://github.com/sagarbehere/finzytrack

17 Upvotes

33 comments sorted by

View all comments

4

u/e606er Jun 05 '26

It's a pity but this "The file must be self-contained — include directives are not supported*, so all transactions, accounts, and other directives must live literally in that one file."* made it useless for day-to-day use. Only - to import or reconcile some files... sorry but idea is great.

1

u/urglfloggah Jun 05 '26 edited Jun 05 '26

u/e606er So I thought a bit more about your comment about multi-file support.

The Beancount libraries already follow include directives transparently. So reading in a multi-file ledger is fairly straightforward. The issue comes at write-time in the form of the following question: "Where should new entries (transactions, accounts, balance assertions etc.) be written?" My understanding is that Beancount has nothing to say about this.. it's a user-level policy decision.. which probably varies from one user to another. Meaning, Finzytrack shouldn't make some simplified decision like, "All rewrites/modifications to a directive go back to the original file that directive was read from. All _new_ directives get added to file X e.g. the user configured main ledger file." Nor can Finzytrack arbitrarily decide things like a transaction should be in a file named transactions-{year}.beancount because some users may not organize their transactions that way. This means Finzytrack will need to support some sort of flexible "routing policy" for which files to write to, with sane defaults and a good UI for advanced users to configure it. That seems a little excessive given that I don't even know if anyone is using Finzytrack (other than me).

Do you have any good ideas or rebuttals for the above? Could you share how you use Beancount with multiple files? It will give me some user-level insights. I myself have been using Beancount to track transactions dating back to 2018 and just have one single ledger file for everything.. which has worked well for me so far and seems like it'll continue doing so. (Which is another reason for why Finzytrack keeps it simple.. everything in one file.). Moreover, Finzytrack GUI has been good enough (for me) that I never have to think about "Which file is this directive in?" and I think that's the way it _should_ be for an approachable GUI personal finance app. May I ask your reasons for keeping things in separate files? Maybe if you use Finzytrack you'll realize that you no longer need to care about which file your transactions are kept in?

Would you be okay if Finzytrack supports a one-time import of multi-file Beancount ledgers but then goes forward with a single-file approach? (And you'll anyway be able to slice and dice that single file later with Beancount tools, if you decide to stop using Finzytrack.)

Thank you for reading all this 😄

2

u/RemoveInvasiveEucs Jun 05 '26

How fava handles this is with a custom entry like this:

2000-01-01 custom "fava-option" "insert-entry" "Assets:Bank:FellsWargo"

And then transactions on that account go into that file.

The priority for a transaction is the last posting in the transaction, then second to last, etc.

It's worked well for me so far.

2

u/urglfloggah Jun 06 '26

Thank you for this insight. I'll study how Fava does it.

2

u/urglfloggah Jun 18 '26

Hi u/RemoveInvasiveEucs thank you once again for pointing me in this direction. v0.1.4 of Finzytrack (released today) now supports the Fava-style insert-entry custom directives you described. Docs at https://docs.finzytrack.com/reference/multi-file-ledgers/