I built my own to-do and expense tracker on Cloudflare (and the server can’t read my data)
For years my whole life ran through two commercial apps: a to-do list and an expense tracker. Work tickets, rebalancing my ETF portfolio, podcast episodes I wanted to come back to, and every single thing I spent money on, all of it stored on some company’s infrastructure.
Then the subscriptions got more expensive and the interfaces changed for no good reason. Apps that had worked perfectly and cost little turned into an everyday hassle: redesigns that made no sense, features that disappeared or stopped working. At some point it was just too much.
So I built my own. As far as I’m concerned, SaaS is dead. Well, kind of. Both apps look and feel like the ones I used to use, both run entirely on Cloudflare, both work offline, and every task title, amount, category and note is encrypted on my device before it leaves it. The server stores my data, but it can’t read it.
This post is mostly about how that works: the encryption model I borrowed from Bitwarden, the local-first architecture it forces on you, and what it was like to build both apps together with an AI coding agent.



