My Pantry
January 2026Ongoing

At first I just wanted a pantry within reach: a page where I see what's in stock, add an ingredient, filter, and that's it. No account to create, no sign-in, nothing to configure. You open it, you use it.
That stayed the guiding principle, even as the project grew.
No account, everything local
The inventory and recipes live in the browser's localStorage. There's no database for that, no server holding my data, so nothing to secure and no account to manage. The data stays on the machine of whoever uses it.
The downside is that localStorage doesn't back itself up. So I added JSON export and import to make a copy or move between devices, and a text export meant to be pasted into an assistant. That spawned a small side tool: a skill that takes the pantry text and turns it into JSON recipes you can actually make with what you have in stock.
From ingredients to recipes
The recipes part came next. Since I already had the list of what I had, I might as well use it to cook.
For displaying a recipe, I started from the way Claude presents recipes in its interface: I took the parts that worked well and adapted them to my case. Recipes are stored locally too, with the same JSON export and import. A recipe is a title, ingredients with quantities, and steps that can carry a timer.

Cooking mode, across two screens
This is the part I added last, and the one that took the most thought. The idea: save a recipe on the PC, then follow it on the phone propped up on the counter, without transferring any file.
On the computer, you start a recipe in cooking mode: a six-digit code and a QR code appear. You scan it with the phone, which joins the same session, and both screens move together. The mode is immersive, full screen, one step at a time, with keyboard or touch navigation. Each step can start a timer; when it ends, a synthesised beep sounds and the phone vibrates.

It's the only place in the project that needs server-side state. A session is a key in Redis, with a 24-hour lifetime, and the two devices sync by polling the server twice a second. Redis is reachable neither from the internet nor from the other projects on the server; it only relays the session for the duration of the cooking.
The whole thing keeps a deliberately simple interface, in a "rustic kraft" theme with a handwritten font, so it feels more like a recipe card than a spreadsheet.
What I took from it
It's one of the projects I built quickly thanks to Claude Code, and above all end to end with it: I brought the idea, we thought through the tech, the interface and the constraints together, I built the prototype, tested it, gave my feedback, and iterated. It's the kind of project I wouldn't have taken the time to do alone, and it exists because it cost me little more than the idea.
It's online, no account, and anyone can use it.