Personal project, 2026
DevNotes
A searchable memory for the things developers fix once and lose.
Capture notes and snippets in one submit, find them again with ranked full-text search, ask questions over your own notes, and publish the good ones as public pages.
- 1submit to capture
- 24colour themes
- 20versions per note
- 51backend tests
Capture in one submit.
Notes, snippets, links and tasks from the dashboard, with templates for a TIL, a bug fix, a command or a checklist.

Find it again in milliseconds.
Ranked full-text search inside PostgreSQL, behind a command palette with filters like tag:react type:snippet.

Ask your past self.
Ask Workspace runs the same search over your notes and answers with source cards and highlighted excerpts.

Snippets, sorted by language.
Code-first notes land in a vault with lanes for bash, css, python and typescript, each with a copy button.

Publish the good ones.
One click turns a private note into a public page with an author card, reading time and related notes.

Works on a phone.
The same dashboard, Explore feed and public pages, laid out for a small screen.

Make it yours.
Twenty-four colourways with their own typeface and corner dials. The Theme Studio previews everything and only applies when you say so.








Under the hood
The browser only talks to same-origin /api/*.
A catch-all Next.js route re-attaches the token from an HttpOnly cookie and forwards to FastAPI. No CORS surface, no backend URL in the bundle.
Refresh tokens rotate and notice theft.
Each device has a session row with a bcrypt hash of its refresh token. A stale token revokes the session.
Search lives in the database.
search_vector is a stored generated column, so the index is always consistent with the row. One backup, one deploy.
Every save keeps a snapshot.
The previous state is written in the same transaction, trimmed to the latest twenty.
Details
- Built with
- Next.js 16, React 19, FastAPI, SQLAlchemy, PostgreSQL 16
- When
- 2026
- Links
- Live appSource