- Rust 82.2%
- Jinja 11.3%
- CSS 4.9%
- Dockerfile 1.4%
- HTML 0.2%
| examples | ||
| migrations | ||
| src | ||
| static | ||
| templates | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Containerfile | ||
| languages.toml | ||
| README.md | ||
| UNLICENSE | ||
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.