Personal tools
Three small private apps, built in a handful of evenings for two users — and published anyway.
Just, an app
My wife was plateauing in her sports practice, wanted to push herself, and ChatGPT’s coaching was leaving her hungry. Just, an app.
We’d tried Bankin, Excel, paper envelopes, daily budget — nothing quite fit our needs. Just, an app.
I wanted to run my writing pipeline while keeping control over what I put out, and might as well get my money’s worth out of my Claude Max subscription. Just, an app.
Writing this intro, I realise I’ve said “just, an app” three times in five lines — probably a narrative tic worth interrogating, but it’s also the truest account of what happened. Making an app, for three household needs, has become a gesture of the same order of magnitude as installing something from the app store: fast, on hand, adaptable to my tiny personal exception.
Nothing quite fit
The three apps share a pattern that, once named, jumped out at me — though I hadn’t seen it while making them. Each time: a specific need, a market of existing tools that only served it approximately, and that familiar little irritation of why am I adapting to a piece of software instead of the other way around.
It’s a new irritation — or rather, it’s an old irritation that had stopped being necessary. Because over the past few months, I’ve acquired the mental toolkit to answer it with something other than resignation. I didn’t write these three apps because I’d levelled up — I’m the same developer I was six months ago, and probably no better than I was ten years ago. I wrote them because Claude Code has narrowed the cost gap between adapting to what exists and building what you actually want enough that the second option has, finally, become reasonable.
Three apps
Belle Forme
Personalised sports coaching for Léa. Palette styled after Mrs. Maisel.
Bas de Laine
Household budget by envelopes. The only one with a real database and real auth.
Écritoire
Orchestrator for my writing pipeline. Backend called Google Drive.
Three apps, three different users (one is Léa’s, one is ours, the last is mine), three stacks, three levels of authentication. I had no plan for this to become a series. The series appeared afterwards, when I looked at the list trying to figure out what to say about it.
Belle Forme: an app for someone
Belle Forme is a sports coaching app. The peculiarity is what happens between the app and the coach. There’s no AI built in. Léa exports her progression from the app, pastes it into a Claude project we set up together, the AI suggests an adjusted programme, Léa re-imports it. The workflow looks cobbled together — it is — and it’s a choice, not a fallback.
I already pay a fair amount for a Claude Max subscription. Adding a paid API to the app to wire in a dedicated AI would mean paying twice — and probably choosing a weaker model to keep the bill reasonable. There’s the free Groq API, of course, but without access to the best models, and especially without the memory of a Claude project that learns over time. Put differently: the manual workflow — export, paste, re-import — is the obvious shape, once you’ve honestly accounted for the real cost of the alternative.
Léa knows the workflow down to its small print; we programme the coaching together, inside my Claude subscription. Her feedback, almost exclusively, is what drives the app’s evolution. What I brought to it, uninvited: I themed the interface after Mrs. Maisel, which she adores. It changes nothing about what the app does. It’s just the small gap between a tool and a gift.
Bas de Laine: the only one with a real database
Bas de Laine is the most technical of the three. It has a real Neon PostgreSQL database, a proper auth, a real user model. Belle Forme makes do with a password hash in a Netlify environment variable; Écritoire delegates its auth to Google; only Bas de Laine asked for the full artillery.
The reason isn’t that money is sacred and deserves a respectful architecture. The reason is prosaic: we use Bas de Laine together. Multi-user, therefore a real account model, therefore a database, therefore auth. The respect it seems to command is a side effect of collaboration, not a symbolic decision.
As for the envelope system itself — a budget carved into themed pockets, each with its balance, its top-up rules, its thresholds — it pre-dated the app. It’s Léa’s and my method, road-tested on spreadsheets, paper envelopes, and two or three commercial apps we adopted and then shelved in turn. The app invented nothing. It just stopped costing us time to maintain the system’s housekeeping.
Écritoire: a backend called Google Drive
Écritoire runs my writing pipeline — the articles for the newsletter, their states (idea, draft, review, scheduled, published), the derivatives for social media, the associated visuals. It’s a Next.js app, nothing unusual at that level. The strangeness is elsewhere: Écritoire has no database. Its backend is Google Drive.
I could have stood up a real database, as I did for Bas de Laine. I chose Drive, and the reason is less elegant than one might imagine. It’s not a philosophical statement about data sovereignty, nor a rejection of proprietary silos — it’s an integration choice. Part of my editorial review happens in another tool, Cowork, which reaches my files through Drive’s local sync. By keeping everything on Drive, Écritoire and Cowork see the same files, with no bridge for me to build between them.
An unexpected but pleasant consequence: Écritoire became an orchestrator of a pipeline more than a closed editor. The app holds the states and the structure; the review happens outside, in Cowork; the content returns to Drive enriched. The tools hand off to each other, I move around inside, and none of them tries to capture my data. It’s the only one of my apps, I think, that would be hard to lift out of private — it’s stitched to my Sunday-writer’s workshop, and holds no value for anyone who doesn’t share that odd little jumble.
Three months, not three years
I need to put a number down, because it changes the scale of the story: none of these three apps is older than three months. I describe them in the present tense, I use them daily, but they’re very new — newer than many an episode of my newsletter.
What really changed, between the developer I was two years ago and the one who shipped these three apps this winter, isn’t my technical skill. It’s my trust in what Claude Code produces. Before, whatever I did in “vibe coding” stayed at the state of a mock-up I didn’t dare run; today, I deploy in production an app we use every day at home, and that no longer frightens me. Speed, in this story, isn’t the achievement — it’s the corollary of a toolchain that has stopped shaking.
Private apps in a public portfolio
These three apps are private. Bas de Laine and Belle Forme sit behind authentication; Écritoire requires a specific Google account. Nobody but Léa and I will ever use them. And yet they belong here.
The reason fits in one sentence I repeat to anyone who’ll listen — and to those who won’t, too: Claude Code is turning applications into a commodity. These three apps are the ordinary demonstration of that thesis. No thousand users, no startup to build, no commercial ambition; just three household problems solved, one per app, because enduring the approximation of market tools had become less economical than writing our own. That the portfolio hosts them tells you what I am: a builder, in the sense that someone who cooks a lot eventually gets called a cook, even without a restaurant. The interesting criterion is no longer how many are served. It’s whether anything is actually served.
And then there’s the latent publishability. Two of them could come out of the cupboard if I decided. Belle Forme could be re-installed by someone else from git, with a guide. Bas de Laine could grow an account model and go public, on the same model as My Tsundoku, which stepped out of private a few months ago. Only Écritoire will stay intimate — because it is stitched to my writing, and that garment only fits on my shoulders.
P.S.
If you ask me to describe this project at the pub, I don’t talk about the commodification of apps or the trust restored to Claude Code. I say: I wanted to have fun with AI, and I got caught up in the game. It’s the most honest sentence in this letter, and it’s perhaps the one I should have started with.