Vibe coding personal apps in mid-2026 - Francis Irving
Skip to content
Vibe coding personal apps in mid-2026
13 August 2026
There are a few mobile apps that I’ve wanted for a while, and that are relatively<br>speaking just for me.
Toucan Music showing artwork
Places - When people recommend restaurants or cafes to me, I’ve for a long time put them in<br>a Google Maps list. It’s annoying in various ways, for example the page zooms out when you<br>select the list. And I don’t like keeping my data locked into a free service.
People - I’m face blind, and struggle to remember people I haven’t met quite a few times.<br>This is especially noticeable networking in a metropolis. The idea is to help me<br>remember who people are, and train me with spaced repetition to learn their faces.
Music - This one I made impulsively in the last week. Like many others, I’ve<br>long wanted to organise<br>albums in folders on Spotify. After a quest to switch back to buying MP3s, which failed<br>because it got too complicated, I made a custom Spotify player instead.
So over the last month or so I vibe coded Toucan<br>(choose “local only” to just play with it, any data you put in will stay in your browser).<br>For what it is worth, the source code is here.<br>But I’m not really proud enough of it to say it is a “release” - more on that below.
Architecture
The apps I describe above need to work on mobile and sync data to web to use them on<br>desktop. The usual way of doing this would be to make your own personal<br>software-as-a-service with its own web server and database, and then also a mobile app.
This felt a bit much - clunky, excessive and not very scalable. I’ve<br>long been a fan of what is now called the local-first software movement.<br>The idea is that data is primarily on each device, with a standardised sync server to get it<br>between them. This makes operations extremely fast, as they just act locally. Syncing<br>happens in the background. Think something a bit like Dropbox, but for data in databases.
Some of the data is quite private - particularly people’s faces, but even their names on<br>restaurant recommendations. So I prefer syncing to my own server hosted at an<br>excellent local ISP.
I was disappointed to find there isn’t standard personal data sync server software - I was<br>hoping for something at least as modestly popular as Nextcloud.<br>Which you likely haven’t heard of, but is a self-hosted file syncing server (and more).
In the end Fable and I went for Yjs which is the most popular<br>local-first protocol. I wanted a simple server that just writes to a SQLite database (so I<br>could do hosting and backups very easily). Fable found the obscure<br>Hocuspocus, which is simple and does<br>the job (alas it turned out its format is opaque and binary inside the database file, but<br>that’s another story).
I spent a while wondering if I could write the UI in Rust but<br>in the end went for simple and made a Javascript progressive web app (PWA).<br>When installed on my Android phone (via Chrome, for some reason it doesn’t work in Firefox), it is just as good as an actual app. The web version and the mobile version are the same code<br>and work just the same. Even with LLM coding agents, that saves a lot of hassle.
Basic process
Toucan Places at a coffee shop
I did most of this on the £18/month Claude plan, using mostly Opus. Fable helped with a<br>bunch of initial planning, but I’m not sure it made a lot of difference. Several of<br>those decisions were bad anyway, and were refactored later.
My processes are commonplace by this point in LLM coding. There’s a plans/ directory<br>where anything large gets designed first. I edit it, make decisions, then clear the<br>context window and tell the agent to implement the plan.
If something is a significant UX or design change, I ask Claude to make an artefact with<br>different options for the design in it. These are surprisingly high quality, especially<br>after a few iterations.
I manage bugs and tasks in a simple to-do file.<br>The agent ticks them off when it has done them, then I QA them and delete them.
Most of these tasks are under a heading “Polish”. That’s because I have to give a lot of<br>product and UX detailed feedback. I take note of them while I’m using the apps as I go<br>about my day. Dozens and dozens of items for each app. This is a major reason I think this<br>is hard to scale to anyone right now - see below.
I’m stubbornly not upgrading to a more expensive AI coding plan. I’ve lots of other things<br>to do, and quite liked being stopped by the 5 hour window, as this is addictive .<br>Later on I learnt you can type !sleep 3h (or whatever) when you run out of tokens, and<br>press Ctrl+B to background it (otherwise you get a 2 minute timeout). Claude will wake up<br>hours later, and carry on with its limits reset, even if I’m not around.
Making it do a good job
Bespoke snapshot testing...