The problem
My AI prompts were scattered across notes, markdown files, and memory. I needed one searchable place to keep them — and a hard requirement: nothing leaves the browser. No API keys hitting a backend. No prompts stored in the cloud. The privacy constraint wasn't a nice-to-have; it was the whole product.
The approach
Built in Next.js 15 with localStorage as the entire data layer. One constraint — "everything stays on the user's machine" — became the governing design principle. Search? localStorage query. Tags, favorites, import, export, dark mode — all local-first. I shipped across 20 stacked branches over several months, adding features without ever standing up a server.
The constraint forced discipline. You can't cheat with a backend. Every feature had to be thoughtfully scoped because there was nowhere to offload decisions.
What shipped
A local-first prompt manager with full-text search, tag filtering, favorites, bulk import/export, and dark mode. Fifty features shipped. Zero backend. Deployed as a static site on GitHub Pages and open-sourced under a permissive license.
Reflection
Local-first privacy isn't a limitation — it's a competitive advantage. Building everything in the open with no server made the product sharper, not weaker. I'd make the same call again.