Local-first
A local-first kanban board.
Local-first is a simple idea: the copy on your device is the real one, and the app works from it rather than from a server. Kaniban takes the idea one step further than most. There is no server copy at all.
What local-first means
Three things have to be true, and in Kaniban all three are:
- The data is on your device. Every workspace, column, card, tag, note, timer and picture is stored by your browser, on your computer. Nothing about a board is uploaded.
- The app works without a connection. Once loaded, the board, the calendar and the timers run offline. There is no request to wait for, because there is no server that knows the board.
- You can take your data out. Export writes the whole board to one file, whenever you like, on every tier. Import reads it back. Leaving is always possible.
How the board is stored
- The board itself is a single record under the
kanban.v1key in your browser's localStorage: workspaces, columns, cards, tags, timers and the sessions each timer has run. - Pictures on cards and boards go to IndexedDB, re-encoded to a small size on the way in so the store stays light.
- When a new version of the app changes the board's shape, it keeps a copy of the old record before migrating, and it refuses to open a board written by a newer build rather than misread it. Your board is never touched without a copy existing first.
- Export produces a
.kanifile: plain JSON, or a zip when a board carries pictures. It contains no licence keys or access tokens, so it is safe to keep anywhere.
What still goes over the network
Local-first is not the same as air-gapped, and it is worth being exact about the difference. Kaniban makes these calls, none of which carries board contents:
- Analytics. Vercel Web Analytics counts page views and a few in-app events, without cookies. It never sees a card.
- Ads. On the free tier, Google serves ads in a fixed slot outside the work grid. Inside the EEA they load only after consent.
- Licensing. Supporter and Plus send a licence key and browser registration to Kaniban's licensing service, and check in daily while used. Board contents are not part of the check.
- Feedback. The feedback and rating forms send what you type in them, and only that.
- Updates. The app fetches new builds when they exist and asks before reloading.
The privacy page is the full account of each one.
Local-first without sync
Most local-first software syncs: each device keeps a full copy and a service merges them. Kaniban does not, and the reason is the account. Sync needs a server that holds every board and knows which person each belongs to, which is precisely what a personal board does not need. So the board on this device is the only board. Moving it is an export and an import. If Plus is writing its automatic backup into a folder that something you already run keeps synced, the file travels with it, and importing it on the other machine is still a deliberate step rather than a surprise.
The desktop app is local-first too
The Windows app is the same board in a window of its own, with its storage inside the app rather than inside a browser profile. It works offline from the first launch, and export and import move a board between it and a browser.
Questions
Is local-first the same as offline-first?
They overlap. Offline-first says the app must keep working without a connection. Local-first adds that the copy on your device is the authoritative one and that you can take it with you. Kaniban is both, and goes further by keeping no server copy at all.
Is Kaniban open source?
No. What you can check for yourself: there is no account, the board is in your browser's storage where you can read it, export gives you the whole thing as JSON at any time, and the privacy policy lists every network call the app makes.
Can I inspect my data directly?
Yes. In your browser's developer tools, under Application, Local Storage, the kanban.v1 key holds the board. Or export it: the file is readable JSON with every card, tag and timer session in it.
What happens to my board if Kaniban shuts down?
The board keeps working, because it never depended on a server. The free tier has no server dependency at all. Paid features check in daily and would carry on for up to seven days without an answer; after that they would pause, and every card would still be there to read and export.
There is nothing to sign up for.
Open it, name a board, and start. If you do not like it, close the tab. You have not given anyone anything.