Gitea issue templates (.gitea/issue_template/): - bug.yml: structured form requiring version, environment, what-happened, repro steps, expected, optional logs. Routes security reports to security@librete.ch instead of public issues. - feature.yml: prompts for the underlying problem before the proposed solution, plus alternatives and out-of-scope. Pull request template (.gitea/PULL_REQUEST_TEMPLATE.md): checklist for tests, lint, manual exercise, docs, and changelog. Asks for explicit reviewer notes so trade-offs surface in the PR description rather than being lost in chat. CODE_OF_CONDUCT.md: links to Contributor Covenant 2.1 verbatim rather than inlining; documents scope, reporting address (conduct@librete.ch), and points enforcement at the Covenant's own Enforcement Guidelines. README links the docs/ tree, CONTRIBUTING, and the CoC so new contributors find the entry points. Closes #31. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
96 lines
2.6 KiB
Markdown
96 lines
2.6 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.
|
|
|
|
## 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.
|