- 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>
83 lines
2.2 KiB
Markdown
83 lines
2.2 KiB
Markdown
# librenotes
|
|
|
|
[](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.
|