My Tsundoku

The word

Tsundoku (積ん読) is the Japanese word for the stack of books you’ve bought and haven’t read yet. The usual translations miss the texture: in Japanese, the word is tender. It doesn’t accuse. It describes, without judgement, a perfectly ordinary state — that of a reader who loves books faster than they finish them.

It took me a while to understand that the pile is half a promise, not a failure. It’s not a backlog; it’s desire in the present tense.

What other apps got wrong

Goodreads, Babelio, StoryGraph: three columns — to read, reading, read. The pile, in that model, is a transit zone you’re meant to clear. The bigger it gets, the more the app becomes a quiet reproach.

None of them have a column for “I wanted this” — a book noticed, not yet bought. None of them have a column for “I’m letting this go” — a book finished or abandoned that someone else might want. The linear model doesn’t fit a real reader’s life.

Four columns, observed

I watched how I actually handled my books. There were four states, not three:

Wishlist → Unread pile → Library → To sell.

The app is a kanban. You drag a card from one column to the next and the verb changes: buy, start, shelve, give away. No reading streaks. No percentages. No notification telling you it’s been three days since you opened a book. Just an honest inventory that tracks the actual movement.

Why local-first

A reading tracker has no business living in someone else’s cloud. The app stores everything in IndexedDB, on the device. It works offline by default. Sync exists — Supabase, magic link — but it’s an option, not a condition of use.

Books were the excuse to learn the architecture I want for everything personal: my data, my device, sync as opt-in.

What’s inside

Scanning a barcode triggers an ISBN lookup on Open Library. An anonymous community catalogue means the next person doesn’t have to retype the same book. FR/EN, light/dark mode, installable as a PWA from the browser.

my-tsundoku.app

P.S.

The code is public. AGPL-3.0 for personal use; commercial licence on request. Not for contributions — so people can see how it’s made.

Open the app →