Files
librenotes/README.md
T
libretech 6b6993cc6f
Deploy / deploy (push) Failing after 3m22s
CI / ci (push) Successful in 15m30s
docs(deploy): add netcup deploy runbook
Derived from netcup canonical DEPLOY-TEMPLATE.md. Same 9 sections
across all stacks (target, env, first-time, update, smoke,
troubleshooting, rollback, stack-specific notes, issue tracking).
README links to DEPLOY.md.
2026-05-04 16:19:27 +02:00

98 lines
2.7 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).
> **Deploy / operate on netcup:** see [DEPLOY.md](DEPLOY.md) (canonical netcup runbook).
## 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.
## Documentation
- [User guide](./docs/user-guide.md)
- [Self-hosting](./docs/self-hosting.md)
- [API reference](./docs/api.md)
- [Operations](./docs/operations.md)
## Contributing
See [CONTRIBUTING.md](./CONTRIBUTING.md) for setup, conventions, and
the PR process. By participating you agree to the
[Code of Conduct](./CODE_OF_CONDUCT.md).
## License
MIT — see [LICENSE](./LICENSE). Copyright is shared between the original
Notesium author and the librenotes contributors.