Confetti, a Google Keep of my own
Leaving Google left one gap: the notes app I used every day. Confetti is a self-hosted Keep clone for me and a few friends, with one SQLite file per user, a Takeout importer, and offline reading on the phone.
When I moved my email off Gmail, Google Keep was the piece I missed. It is a modest app — coloured cards, checklists, labels — but I had years of shopping lists, half-formed ideas and snippets of configuration in it, and nothing I tried as a replacement felt as quick to open and scribble into. So in May 2026 I built [Confetti] with Claude(https://gitlab.com/dmorel69/confetti), a Keep clone that runs on my homelab and that a few friends use as well.

Simple on purpose
It is an Express server with a plain JavaScript front end and no build step, which means I can still read every part of it, and that matters for something holding notes I care about. The one design choice I would make again is that every account gets its own SQLite file. There is no shared notes table, so no query can ever return somebody else’s note by mistake, and backing up or deleting a person’s data is a matter of copying or removing one file.
Bringing the old notes along
None of this would have been worth doing without my existing notes, so the importer came early: it reads a Google Takeout archive and brings the cards across with their colours, labels, checklists and pinned state. It also restores Confetti’s own backups, so moving between machines or recovering from a mistake uses the same path.
The parts that took longer than expected
Dragging cards around a grid looks trivial and was the most fiddly part of the whole project. Chrome builds the drag image from the full card, including the lines hidden below the fold, so a long checklist dragged as a column-tall ghost until the app started building a trimmed copy for it. Pinned and unpinned cards also share column numbers, so for a while a pinned card dropped into a column landed wherever the fifty unpinned cards below it suggested.
Opening it to friends meant thinking about things a personal tool can ignore: email verification and password resets, a small storage quota per account, an approval step for new sign-ups, and link previews that cannot be tricked into fetching addresses inside my network. It also became an installable app on the phone, keeping a copy of the notes so they open instantly and stay readable without a connection.
Was it worth it?
Yes. It runs on my homelab, reachable through a Cloudflare Tunnel, and it is the notes app I open every day — which was the whole point.
dmorel69/confetti— Node.js, Express, SQLite, PWA, k3s