3 min read
Why I Built Duit Local-First

Most expense trackers start the same way: connect your bank. You hand over credentials to an aggregator, and from then on your complete financial history lives on someone else’s servers.

It works well. It’s also a bargain I didn’t want to offer, so Duit is built the other way around.

Local-first, concretely

Your transactions live in a database file on your phone. Not a cache of a server copy — the actual record. The app opens and works with no network at all.

That has three consequences worth spelling out:

There is no account to create. No email, no password, no profile. Install and start.

There’s no server breach that exposes your spending, because there’s no server holding it. The blast radius of an incident on my side does not include your transaction history.

Backups go to your cloud, not mine. Google Drive on Android, iCloud on iOS — your storage, your account, revocable by you at any time. I can’t read those files.

Where data does leave the device

I want to be precise rather than absolute, because two features do send data out.

AI extraction. When you scan a receipt, use voice input, or import a statement, that image or text goes to an AI model to be parsed into a transaction. That’s the feature working as intended — but it’s the piece of your data that leaves, so it’s worth knowing. You choose what to submit each time, and everything you enter by hand never leaves at all.

Exchange rates. Multi-currency conversion fetches rates. That request carries currency codes, not your balances.

That’s the list. It’s in the privacy policy too, in more detail.

The trade-off, stated honestly

Local-first isn’t free. Bank-connected apps sync your transactions automatically, forever, with no effort. Duit can’t do that — it gets close with receipt scanning, voice entry, statement import, and reading your banking notifications on Android, but “close” is not “automatic.”

You also have to care about backups. If you lose your phone and never turned backup on, the data is gone. There’s no server-side copy to restore from. So backup is prompted during onboarding and can run automatically on a schedule — but the responsibility genuinely does sit with you.

I think that’s the right trade for a finance app. Your spending record is one of the most revealing datasets about your life: where you go, what you eat, who you pay, what you’re worried about. The default should be that it stays with you.


Duit is free on Google Play and the App Store. No account required.