Files
librenotes/README.md
T
libretechandClaude Opus 4.7 3b3eb1b201 Add reproducible dev environment
- flake.nix: rebrand description, add Go 1.25, gopls, gotools,
  staticcheck, golangci-lint, gnumake to all dev shells. Add a
  plain `dev` shell (`nix develop .#dev`) that does not wrap the
  shell in the bubblewrap sandbox so contributors can use a
  standard Go toolchain.
- Dockerfile.dev: golang:1.22-bookworm with make, git, gopls and
  staticcheck, /workspace as default cwd. CGO disabled.
- README: document both nix and Docker dev paths.

flake.lock is committed for reproducibility.

Closes #6.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 21:58:59 +02:00

83 lines
2.2 KiB
Markdown

# librenotes
[![CI](https://git.librete.ch/public/librenotes/actions/workflows/ci.yml/badge.svg)](https://git.librete.ch/public/librenotes/actions)
Cloud-native, multi-tenant notes application. A fork of
[Notesium](https://github.com/alonswartz/notesium) extended with
authentication, per-user data isolation, sync, and PWA support so it can
run as a hosted service at [librenot.es](https://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.
```sh
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:
```sh
make build
make test
```
## Run
```sh
./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:
```sh
nix develop .#dev
```
Alternatively, build a Docker-based dev environment:
```sh
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](https://github.com/alonswartz/notesium)
by Alon Swartz, used and redistributed under the MIT License. See
[NOTICE](./NOTICE) for the upstream commit hash at fork time and
instructions for tracking upstream changes.
## License
MIT — see [LICENSE](./LICENSE). Copyright is shared between the original
Notesium author and the librenotes contributors.