Skip to content

desertthunder/notebird

Repository files navigation

Notebird

Notebird is a tiny local-first personal wiki designed to resemble old-school Twitter.

Notebird screenshot

It runs as a local Go web app, stores Chirps (notes) in SQLite with attachments using CAS on your local filesystem, supports Markdown with wiki links, and uses HTMX/Alpine for small interactive updates. It almost functions entirely with the nobuild stack, but markdown and wysiwyg editing require CodeMirror & ProseMirror, which are bundled via esbuild.

This project is the sibling of noteleaf but with a focus on notes and the web.

Requirements

If Air is not installed, just dev falls back to go run github.com/air-verse/air@latest. You can optionally just run to start the server without hot reload.

Stack

  • Go server (stdlib) and CLI (charm.sh libs), with SQLite persistence
  • Commonmark compliant markdown, extended with [[Wiki Links]]
    • Notes/markdown files are TiddlyWiki-inspired Chirps with ULID identity
  • nobuild front-end core
    • HTMX-powered feed/detail updates, with Alpine sprinkles for interactivity
  • Fully featured editors
    • CodeMirror Markdown composer with server-rendered preview
    • ProseMirror WYSIWYG composer with Markdown source sync
    • esbuild for CodeMirror & ProseMirror

Run locally

just run

Then open:

http://127.0.0.1:7331

By default Notebird stores data in your user config directory under notebird. For a throwaway local DB:

go run ./cmd/notebird --data-dir ./tmp/dev-data

With Docker

Build the image from the project root:

docker build -t notebird .

Run Notebird with a persistent Docker volume:

docker run --rm -p 7331:7331 -v notebird-data:/data notebird

Then open:

http://127.0.0.1:7331

The container stores the SQLite database and local files in /data.

Development

Install and build frontend assets:

just build

Run with Go hot reload via Air:

just dev

Run just to view all available commands.

Credits

TiddlyWiki for the idea of self-contained notes with wiki links

HeroPatterns for the default background pattern (grid/graph paper)

Twitter, circa 2008, for the design inspiration