Local-first note taking UI focused on backlinks and automatic metadata. Notes live entirely in the browser (persisted via localStorage), making it ideal for a single user who wants a lightweight experience across desktop and mobile.
- Single-column, brutalist UI: centered 650px text column with only black, white, and International Orange accents.
- Inline Markdown editing: raw text stays visible, and
[[wiki links]]are colored/clickable (Cmd/Ctrl + Clickjumps to the target note). - Command palette (
Cmd/Ctrl + K) to jump between notes or create a new one instantly. - Inline link autocomplete: typing
[[suggests existing note titles or lets you create a new target. - Backlinks list at the bottom that shows every note referencing the current one.
- Autosave (800 ms debounce) with created/updated timestamps and word counts for each note.
- Storage: Plain JavaScript objects persisted with
localStorage(notebook-noteskey). Each note contains{ id, title, content, metadata }. - Metadata: Generated in
app.jswhen a note is created or updated. Tags follow the pattern#yyyy-mm-dd,#hh:mm, and#weekday. - Backlinks: Detected by scanning every note for
[[Title]]references whenever a note is selected. The list of referencing notes is rendered at the bottom of the page. - UI: Static HTML (
index.html) + CSS for the brutalist single-column layout plus a keyboard-driven command palette. JavaScript is framework-free to keep bundle size tiny and easy to host anywhere.
- Open
index.htmlin any modern browser (double-clicking the file works). - Start typing—autosave keeps everything up to date. Use
Cmd/Ctrl + Kto jump between notes or create new ones. - Link notes with the
[[Title]]syntax;Cmd/Ctrl + Clicka link to open that note immediately. Backlinks appear at the bottom of the page. - Everything stays local via
localStorage, so no setup is required.
- Serve the folder with any static file host (e.g.
python3 -m http.serverlocally or deploy to GitHub Pages/Netlify). - Visit the page and your browser will offer an “Install” / “Add to Home Screen” option.
- The service worker precaches the HTML, CSS, JS, manifest, and icon so everything works offline after the first load.
This prototype already works offline on mobile browsers (load index.html via any static hosting). To make sharing easier:
- Convert it into a Progressive Web App so it can be “installed” and accept incoming shares via the Web Share Target API.
- Add a
/shareroute that accepts URL/query payloads so mobile shortcuts can prefill note content. - Long-term, create a lightweight sync backend (Supabase/pocketbase) so desktop & phone stay in lockstep.
Happy writing!