2023-03-30 project
Money

What gets measured gets improved.

For a long time, I had trouble finding a financial tracking tool that suited my needs.

Networth = Assets – Liabilities

Most tools out there for Indian users normally have expertise in one of the items present on the right-hand side of the above equation.
There are asset trackers like Kuvera, Groww and Zerodha which are good at visualizing Dematerialized assets like Mutual funds, Stocks, Digital Gold, and others. There are expense trackers like Walnut, UPI apps and Bank apps which can track your expenses.

But there are a few apps that can do both. So, I started building a solution to solve this tracking problem.

And I present you to

Trackledger

We will go over the technical details in a different post, but after many iterations. Right now it is a Go backend and SolidJS frontend.
It uses accounting practices to create accounts and transfer money from one account to another. With this simple setup, I can register all kinds of transactions which mass-market apps generally will not allow.

The whole app is divided into several sections

Home page

First row

First row

The most important metric to track in any finance tracker should be What's your net worth. And that is the first thing Trackledger shows me when I log in. The next block tells expenses incurred this month including necessary expenses in number and percentage formats.
Many of you would have multiple bank accounts and it can be time-consuming to check cumulative bank balance so that is what I show in the next block. You will not realize how important it is to know your savings rate for that month?. So that is what the next tile is about in the first row.

Second row

Second row

The second row has two sections. The first block shows average expense done per day for last 90 days (about 3 months) which is used to calculate runway for just bank balance. And show the runway if I liquidate all assets right away. Expenses over the last quarter really show what are my spending patterns and they normally shoot up during trips. The second section shows a simple chart of Cashflows over the last 6 months. It shows Income (Blue bar) vs Expenses (Green Line) vs Investments (Orange line).

Third Row

Third row

This self-explanatory row shows the net worth over time in the first graph and the invested amount versus the current value of your portfolio over time in the second graph.

Fourth Row

Fourth row

This row gives a general view of expenses incurred in the last 30 days in bubble format. This chart shows which were the biggest expenses in one glance. The same case goes to the next chart which shows expenses made category-wise in this month.

Fifth Row

Fifth row

The fifth row is simple. The first block shows current asset allocation in pie chart format. The second one shows XIRR of each asset I invest in. Both charts do not change a lot on a daily basis so looking at these charts quarterly makes more sense.

Sixth Row

Sixth row

Sometimes I want to see a detailed daily transaction list of all things I did today so that is what the first table is for. The second table shows current balance of all my assets and liabilities account.

Editor

What we just saw was the main page I see when I open the app. But you would be wondering how do I enter data?? How do I record transactions?? All of this is just stored in a plain text file which I can read. I integrated Ace editor in one tab where I can edit the main file and save changes. After which all the data for the home page is recalculated.

Editor

In the above picture, you can see that there are entities, and we are assigning an amount to each entity. I am using Ledger-cli for writing and parsing these transactions.

2021/12/01 Dio Air
    ; necessary
    Expenses:Vehicle  10 INR
    Assets:Bank:SBI

So, in this example, I am saying that on 1st Dec 2021, I transferred 10 Rs from my SBI bank Account to a Vehicle Expense account which I tagged as a necessary expense with the description as Dio Air. The same grammar can be used to show expenses done on a Credit card.

2021/12/01 Dio Air
    ; necessary
    Expenses:Vehicle  10 INR
    Liabilities:CreditCard:AmazonICICI

I started writing this file in Dec 2021 and the number of insights I get looking at the dashboard right now after 2 years is just mind-blowing.

Account Register

Sometimes, I want to see all transactions done in one specific account in some period, so I created a table that shows that exact thing.

Register

So in the above case, I can see how much money I spent on petrol for March 2023 and I can also see the total amount I have spent till now in the Balance column. I can do the same thing for Asset accounts, Loan accounts, Expenses accounts or any other account present in my file.

Travel summarizer

Now there are times when I want multiple transactions in a specific period from different accounts. While travelling, I can spend money on petrol, hotel, vehicle, and food so showing a combined report for all accounts was not possible on the above register page. So, I created a tagged transaction register which shows total transactions and amount spent in a specific tag. Tags are generally about the trips I took.

Trip

So, this table shows how much I spent on one amusement park trip I did.

Other features

Till now I just highlighted all the UI parts of the app. But there are many advantages of using the accounting format for storing transactions.

Features I would want

Even though, I am happy with my current setup. I sometimes feel like I want

These are nice features to have, but they do not mean anything to me in the day-to-day timeline. Just like the XIRR graph does not mean anything to me in short timelines. So I dont know when will I implement them.

Conclusion

Overall, just spending 5 minutes on a daily basis and recording my transactions in a file turned out to be an awesome exercise.
You can check out the app here with credentials as root and root. It is just a demo account with the home page accessible as I am too lazy to create fake data for other pages.
If you have any other questions or want a deeper dive into the app, Do contact me. I will be happy to have a chat. Ciao!!!