Sasha Zalygaiev

Product Design 0 → 1 Human Interface Visual Design

Kōro: Making Of

This is the second Kōro. The first was a restyle of someone else's app. This one I built from an empty folder: I designed it, Claude Code wrote the code.

Scope
Everything but the code: what to build, what to cut, how it looks and works, the name
Team
Me and Claude Code
Released
Oct 26, 2026Started Oct 12: nine days to sync, then a week of polish
Stack
Svelte, IndexedDB, Cloudflare Workers and D1

The First Kōro

For a long time I was looking for a kanban tool that felt light. Every one I tried started minimal and ended up bloated. Then I found iKanban, a small open-source board that runs in the browser with no server behind it. It did everything I wanted, but you had to fight the interface to see it. So I redesigned it for one user, me, and called it Kōro: Japanese for route.

Before, iKanban as I found it: a dark title bar, boxed gray columns and small cards with coloured buttons
Before: iKanban, as I found it. After: the first Kōro, my redesign. Tap the image to switch.

I used it for about six months, on a desktop of its own on my big display. Seven columns fit it perfectly, so on Sundays I sat down with it and planned the week.

It never felt quite right, though. I'd restyled someone else's app with CSS, and some things CSS can't fix, like where the new column button sits. I wanted to control how it works, not only how it looks. So I started over, from an empty folder.

9 days

From an empty folder to an app that works offline and keeps my laptop and phone in sync took nine days, then a week of polish. I drew the screens and made every call. The only thing that ever stopped me was Claude's usage limit.

This Will Do

The rebuild's codename was Shiro, Japanese for white, after Kenya Hara, Muji's art director. Hara draws a line between simplicity and emptiness. Simplicity is what's left after you remove things. Emptiness is room for whatever you bring. An empty Kōro board is that room.

kore de ii“This will do.”

kore ga ii“This is exactly what I want.”

Muji's standard is the first, said with confidence, not as a shrug. Not the second. I held Kōro to it.

Remove Until It Breaks

There were no feature requests. I was the client. So instead of asking what to add, I kept asking what I could take out before it broke. Sign-in went down to one button, “Turn on sync”, and Face ID or Touch ID. The hardest cuts were things already built and in use. A feature had to earn its place by daily use.

Made, then cut
A colour for every boardTwelve hues, one per board. I liked them. They worked against the calm, so boards went neutral.Oct 17 → Oct 26
A shortcuts overlayAn overlay listing every key, behind a ? button. Now one quiet line names the keys that work where you are.Oct 20 → Oct 26
Moving boards by fileBuilt to bring my local boards to the synced address. Once they had moved, sync was enough.Oct 19 → Oct 27
Account screensClaude hallucinated these, unasked: a device list, sign out, delete account, a new recovery code. It even mocked them up. I shelved them as noise.Oct 26, never shipped
Cut too far, put back
Add card on hoverHidden until you hovered a column. Always visible again the same day.Oct 14 → Oct 14
Renaming a boardDropped from the first version, back in it the next day.Oct 14 → Oct 15

Feel It, Don't Mock It

I didn't polish every screen before building. My drafts were enough to start. After that I designed against the running app: I'd use it, notice what felt off, and redraw that one piece in Figma. Claude filled in the states I hadn't drawn, and some of its choices didn't bother me at all. It gave the buttons a rounded black style, and I thought: why not?

The Figma draft: three columns, Backlog, Next and Done, each with the same card, and a round add button beside them
My Figma draft, Oct 14
The board today: six columns from Inbox to Done, plus tiles under each column for a new card
Today. Add Card links became tiles, delete moved into board selection, and every column got a menu.

On the phone, swiping across the board felt like an endless Figma canvas, with no structure. Now it moves one column per swipe and never stops between two, and each column scrolls on its own. Drag a card to the edge of the screen and the board turns one column.

One Line per Decision

Nobody was telling me how it had to be done, so I became my own product manager. The bigger pieces started as written proposals before they were built: sync, motion, the phone layout, the data model. Every decision went into a log, one line with the reason. Annoyances from using the app went into a friction log, and most were fixed the same day.

docs/decisions.md

Account features shelved (Sasha: noise and bloat): no devices list, new recovery code, sign out or delete account, and no sheet for when sync is on.

Dates (Sasha): one wording everywhere: Today, Tomorrow, Yesterday, a weekday for the six days ahead, then a short date with the month by name, never numeric (02/01 means a different day per country).

Saving starts at once on every change; the 300ms debounce is gone. It lost data: Safari drops a write that only starts as the page goes away, so a reload right after typing kept nothing.

124 decisions in the log

46 of them name me as the one who made the call.

51 f-words

Words starting with “fuck” in my messages to Claude Code. Counted in the session transcripts, not estimated.

Shiro, Then Kōro Again

KōroRoute. What the app does.

ShiroWhite. How it looks.

-donoAn old honorific. The respect you give a good tool.

Shopping for a domain, I found bare “shiro” taken nearly everywhere, and squeezed versions like shiroknbn were unreadable and unsayable. That made me look at the name again. Shiro says how the app looks. Kōro says what it does. So the product went back to its first name.

Koro on its own wasn't available either, so the address took one more word: -dono, an old Japanese honorific that today mostly survives on certificates and in samurai films. The hyphen went, so it's easy to say.

korodono.fyiLive since Oct 26, 2026.

Where It Is Now

It's live, and my MacBook, iPhone and Mac mini are synced. Next is a longer stretch of using it for real work with features frozen, fixing what annoys me. Sync is open to the first 50 accounts, about what the free server plan can carry.