Athenodoros / TopHat

An in-browser personal finance app
GNU General Public License v3.0
124 stars 9 forks source link

TopHat

TopHat is an offline-first personal finances app. It is designed to let users manage their finances across multiple currencies, in a privacy-preserving way.

Transactions View

What is it, technically speaking?

It's a web app served by GitHub Pages, with no backend service.

The frontend is a Single Page App bootstrapped with Create-React-App, built using Typescript/React/Redux and some other common libraries (primarily Victory Charts and Material-UI). It uses a Service Worker for offline behaviour, and IndexedDB (via dexie.js) for storage.

Why have you done this?

I know, another personal finance app.

I wanted to track my expenses in a lightweight way, without doing something crazy like giving a 3rd party the passwords to my bank accounts. After looking around, I found that I wanted three main things:

I couldn't find anything which hit all three requirements, so after many weekends of work, TopHat is now what I'm using.

Should I use this?

Probably not! The goals of TopHat are fairly niche interests, and there may be bugs that I'm not seeing. That said, I can at least vouch for the fact that I'm using it, and that I see no reason why I would take it down in the future. It's available publicly at https://athenodoros.github.io/TopHat, and it can populate itself with notional data for an easy trial.

Potentially Asked Questions

Why have you done this in the browser? Why not a native app?

My feelings are basically summarised in this XKCD, but the short answer is that deployment, installation, and upgrades are all made extremely easy in the browser. It can be installed as a Progressive Web App, if something app-shaped is desired.

A reasonable concern might be around performance, particularly given that all data is loaded in memory while the app is open. In practice, my experience is that this isn't a major issue even with thousands of transactions, so I haven't spent time on a "more scalable" architecture.

Does this work on mobile?

It does not: TopHat is designed for periodic updates and inspection, rather than the daily use which would suggest a mobile interface. Mostly this is because I dislike the idea of constant monitoring of finances, but it would also be difficult to sync data between computer and mobile without a backend server.

I found a bug/I have a cool idea/I want to say hi!

Let me know! No promises, though, although I'll probably say hi back.