A social lending service for communities
  • Rust 82.2%
  • Jinja 11.3%
  • CSS 4.9%
  • Dockerfile 1.4%
  • HTML 0.2%
Find a file
2026-05-12 15:48:48 +02:00
examples added quadlet example 2026-05-12 15:48:48 +02:00
migrations added "sort by author" option & fixed ISBN non-unique issue 2026-05-03 14:12:17 +02:00
src fixed sorting for multi-digit titles 2026-05-10 20:53:30 +02:00
static added logout button 2026-05-07 16:49:44 +02:00
templates made UI and translation keys for bookclub 2026-05-07 17:28:12 +02:00
.gitignore added toml as config language 2026-04-22 20:40:23 +02:00
Cargo.lock added creation of origin user 2026-05-05 21:44:01 +02:00
Cargo.toml added creation of origin user 2026-05-05 21:44:01 +02:00
Containerfile initial working container 2026-05-07 16:26:39 +02:00
languages.toml made languages/localisations be it's own struct 2026-04-30 02:48:13 +02:00
README.md added quadlet example 2026-05-12 15:48:48 +02:00
UNLICENSE updated readme & added unlicense 2026-05-07 16:07:58 +02:00

Bibliotheca

A simple service for social lending among friends and community

Bibliotheca seeks to do one thing and do it well, and that is to make it easy to find, borrow and administer books. Some of it's features are:

  • Email-based, communication between users are based on email. When a user requests to borrow a book, the bibliotheca instance will send an email to the book's owner informing them of the request and the email-adress on which to contact the requesting user to organize the exchange.
  • Invite-tree, users invites other users by email and the resulting "tree" of who invited who can be seen by users to evaluate trust and relationships under the "Statistics about the page".

Bibliotheca probably still contains bugs and improvements of the codebase will probably be forthcoming.

Configuration

See examples/basic.toml for a basic skeleton config for bibliotheca. Bibliotheca also needs a languages.toml, you can either make your own or use the one found at examples/languages.toml for the default bibliotheca localisations as a baseline. The program by default expects the languages.toml to be available at ./languages.toml from where the executable is run.

On the first run, it'll make an origin user for the admin and try to send the user name and password to the email adress provided by the field admin_email in the config file, if SMTP is setup correctly - you'll receive an email containing the login details, if it fails the password will be provided in the stdout of the program. This is done primarily for debugging as the usefulness of bibliotheca relies on the email functionality working correctly.

Note

Bibliotheca currently only supports email by SMTP and STARTLS. This might change in the future if someone needs it, I get bored and implement it or someone submits a patch for it.

Container

A Containerfile is provided as an alternative to running it directly on the host. One quick example for running it with podman run would be:

podman build --tag bibliotheca .

podman volume create bibliotheca-data

podman run -v ./bibliotheca.toml:/data/bibliotheca.toml -v bibliotheca-data:/data -p 8080:8080 <image-id> 

Using it with podman quadlet is recommended for "production" use-cases. See a bare bone example here.

License

This program and it's source code is made available under the terms of the UNLICENSE.