CHANGELOG.md follows Keep-a-Changelog. The Unreleased section sits at the top; the v0.1.0 entry summarises every commit on the path from the empty fork to a hosted multi-tenant build: fork + restructure, storage/auth/tenant/httpapi packages, the serve command, full frontend (landing, login, verify, app shell, PWA, sync), Docker + deploy + backup tooling, docs, and the community infrastructure. Two known-incomplete items called out explicitly: the upstream Notesium UI is not yet wired into the multi-tenant shell, and SMTP delivery has only been exercised against the LogMailer. docs/launch-checklist.md is the manual QA pass for v0.1.0: environment prerequisites, the full sign-up to first-note flow on Chrome / Firefox / iOS Safari / Android Chrome (with explicit PWA-install and offline-shell verifications), documentation accuracy spot-checks, the community-infra render checks, and a backup-and-restore round-trip on the staging host. The QA performer signs off at the bottom; failures are filed as separate bugs against the milestone. The actual v0.1.0 tag will be cut by a maintainer; tagging is not part of this commit. Refs #30 and #33. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
librenotes
Cloud-native, multi-tenant notes application. A fork of Notesium extended with authentication, per-user data isolation, sync, and PWA support so it can run as a hosted service at librenot.es.
Features
- Markdown notes with bi-directional links (Zettelkasten / evergreen notes)
- Embedded web app — no Electron, no Node runtime, single static binary
- Multi-tenant backend with magic-link authentication (in development)
- Offline-capable PWA with background sync (planned, Phase 4)
Build
Requires Go 1.20 or later.
go build ./cmd/librenotes
This produces a librenotes binary in the current directory. The web
frontend and shell completion are embedded into the binary at compile
time, so no extra files are needed at runtime.
A Makefile with build, test, run, and clean targets is provided
for convenience:
make build
make test
Run
./librenotes web --notes-dir ~/notes
See ./librenotes help for the full command list.
Development setup
A Nix flake provides a reproducible development environment with Go,
build tools, and the project CLIs. Use the plain dev shell for a
non-sandboxed Go toolchain:
nix develop .#dev
Alternatively, build a Docker-based dev environment:
docker build -f Dockerfile.dev -t librenotes-dev .
docker run --rm -it -v "$PWD:/workspace" librenotes-dev
The repository layout follows the standard Go project structure:
cmd/librenotes/ Binary entry point
internal/notesium/ Core notes package (forked from Notesium)
internal/notesium/web/ Embedded frontend assets
The Go module path is git.librete.ch/public/librenotes.
Fork attribution
librenotes is a fork of Notesium by Alon Swartz, used and redistributed under the MIT License. See NOTICE for the upstream commit hash at fork time and instructions for tracking upstream changes.
Documentation
Contributing
See CONTRIBUTING.md for setup, conventions, and the PR process. By participating you agree to the Code of Conduct.
License
MIT — see LICENSE. Copyright is shared between the original Notesium author and the librenotes contributors.