This one started with an extremely modern product requirement: I wanted to play one Sudoku puzzle without first being escorted through an ad casino.

The App Store options I tried were technically games, but they felt like puzzle-shaped billboards. Full-screen interruptions, reward loops, timers yelling for attention, dark patterns in tiny shoes. I did not need a growth funnel. I needed nine boxes and some peace.

Sudoku game screen with a clean puzzle grid, progress stats and number controls.
Sudoku: the version I wanted to open without walking past an ad parade first.

So I built a small Sudoku app that can live on my phone home screen, just like a normal app, but without going through an app store. Quiet, fast to open, and deliberately boring in the places where boring is a feature. The point was not to reinvent Sudoku as a platform. The point was to remove everything that was between me and the puzzle.

It was also fully vibe-coded, in the honest meaning of the phrase: build the thing while the shape is still arriving, let the tooling help, then test the result instead of pretending the first draft came down from a mountain with unit tests attached.

That last part matters. Vibe-coded does not mean “ship whatever the autocomplete sneezed out”. The puzzle behavior still needs to hold: generated boards should be valid, moves should not corrupt state, notes should behave, mistakes should be recoverable, and the app should keep working after install like a PWA instead of a website wearing a fake moustache.

I like this kind of project because the scope is tiny and the irritation is pure. No market analysis. No roadmap theatre. Just a small personal tool that exists because the available versions annoyed me enough to open an editor.

It also belongs on this site because those little tools explain a lot about how I work. If a problem keeps poking, I would rather make a calm version of it than keep negotiating with someone else’s pop-up strategy.