docs: link to 'hacking' guidelines in README; document project license

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I6caae0f7de73aa02150b48a3d7d8dcd06a6a6964
This commit is contained in:
raf 2026-03-23 02:33:08 +03:00
commit d61b5d32d1
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
3 changed files with 66 additions and 35 deletions

32
docs/HACKING.md Normal file
View file

@ -0,0 +1,32 @@
# Hacking Pinakes
Pinakes is a lot of things. One of the things it aims to be is _complete_. To be
complete in features, to be complete in documentation and to be complete in
hackability. This document covers, very comprehensively, how you may:
- Build Pinakes
- Develop Pinakes
- Contribute to Pinakes
for developers as well as:
- Distribute Pinakes
for Pinakes maintainers and packagers.
## Building Pinakes
Pinakes is built with Rust (nightly edition) and various crates. The most
_notable_ crate among those is Dioxus, which provides its own toolkit. The UI
for Pinakes is usually _not_ built with the Dioxus CLI but instead with
`cargo build`. This also applies to distributable build results.
[Direnv]: https://direnv.net
To build Pinakes, simply pick the components you want and build them with
`cargo build --release --package <component>`. A Nix shell is provided for
reproducible developer environments and you may obtain all build dependencies by
simply running `nix develop` or `direnv allow` if you use [Direnv]. Nix is a
cross-platform build tool and works on most Linux distributions as well as
Darwin. While distro-specific package managers _might_ work, Nix is the only
supported one.

View file

@ -201,8 +201,11 @@ and design.
## Storage Backends
Two storage backends are supported. For convenience, SQLite is the default
backend out of the box but for production deployments you may choose to prefer
PostgreSQL.
backend out of the box but for production deployments, with improved search and
scaling capabilities you may choose to prefer PostgreSQL. Both backends are
considered first-class citizens, and will be developed as such going further. If
your needs for Pinakes are modest, or if you are simply testing it out, SQLite
is the recommended database.
### **SQLite** (default)
@ -211,6 +214,34 @@ guarantees FTS5 availability.
### **PostgreSQL**
[pg_trgm]: https://www.postgresql.org/docs/current/pgtrgm.html
Native async with connection pooling (deadpool-postgres). Uses tsvector with
weighted columns for full-text search and pg_trgm for fuzzy matching. Requires
weighted columns for full-text search and [pg_trgm] for fuzzy matching. Requires
the `pg_trgm` extension.
## Contributing
[HACKING document]: ./HACKING.md
Pinakes, despite all the work going into it, is still in an early beta. Some of
the features still lack the polish they deserve and there _may_ be breaking
changes to the UI, databases, and the APIs. You may find a comprehensive
introduction to developing Pinakes in the [HACKING document].
It is generally advisable that you familiarize yourself with the codebase before
proposing or contributing changes. Pinakes consists of _many_ moving parts, and
it is better for the contributor experience to approach issues slowly and
discuss them beforehand.
## License
<!-- markdownlint-disable MD059 -->
[here]: https://interoperable-europe.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf
This project is made available under European Union Public Licence (EUPL)
version 1.2. See [LICENSE](LICENSE) for more details on the exact conditions. An
online copy is provided [here].
<!-- markdownlint-enable MD059 -->