π Full Documentation Β Β·Β Quick Start Β Β·Β API Reference Β Β·Β Nightly Docs
Multi-user book tracking webapp β maintain four reading lists, import books from Open Library & Google Books, scrape cover art, and get rich reading analytics β all on your own hardware.
docker compose up -dβ full data ownership, no vendor lock-in, no API keys required.
mkdir librislog && cd librislog
curl -O https://raw.githubusercontent.com/codebude/librislog/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/codebude/librislog/main/.env.example
cp .env.example .env
# generate a random secret key
sed -i "s/CHANGE_ME_TO_32PLUS_CHARS/$(openssl rand -base64 32)/" .env
docker compose up -dOpen http://localhost:8001 and create your account.
- Your data, your rules. Fully self-hosted under MIT license β no ads, no tracking, no vendor lock-in. A single SQLite file you can back up anytime.
- No API keys required. Works with Open Library out of the box. Add Google Books or Hardcover.app tokens optionally for richer search results.
- Rich insights from day one. Calendar heatmap, language/status/page distribution charts, books finished per month/year, top authors β all on your hardware.
- Multi-user from the start. User roles (admin/user), optional OIDC SSO, per-user libraries. One instance works for your whole household or small group.
- Import any format you have. Goodreads CSV with automatic field mapping, generic CSV with per-field Python transforms, JSON, ZIP with covers.
- Point your phone at an ISBN barcode. Real-time barcode scanning in the browser β no native app required.
- Cover art from multiple sources. Automatic search across AbeBooks, Open Library, Amazon, and Hardcover β plus manual upload or URL paste.
- Full REST API. OpenAPI-documented backend you can script against β build your own frontend, connect home automation, or pipe data into your own tools.
- Lightweight. Two Docker containers, one SQLite database.
- Bilingual UI. English and German with a localization framework ready for more languages.
- Library β Grid/list view, search and sort, four reading statuses (Want to Read, Currently Reading, Read, Did Not Finish)
- Reading progress β Page-level slider, full progress timeline per book with edit/history
- Statistics dashboard β Calendar heatmap, distribution charts, books finished per period, top authors
- Book import β Search Open Library, Google Books, Hardcover.app. Scan ISBN barcodes on mobile. Manual entry for anything not found
- Data portability β Export as JSON, CSV, or ZIP with covers. Import from Goodreads or any CSV with custom field mapping
- Cover management β Automatic multi-source cover search with manual override, URL paste, or file upload
- Data hygiene β Find and fix missing metadata (covers, page counts, authors) in bulk
- Multi-user β Admin/user roles, per-user libraries, optional OIDC login
- Themes β Light, dark, and custom DaisyUI themes with persistent preferences
- Administration β Full backup/restore of the SQLite database, user management, API key management
The backend is a standalone FastAPI application. The full API is documented via Swagger UI at /api/docs when the server is running.
Create API keys from the web UI (Profile β API Keys) for headless access. See the API Reference for details.
cd backend
uv sync
uv run alembic upgrade head
uv run uvicorn app.main:app --reload| Layer | Technology |
|---|---|
| Backend | FastAPI, SQLModel, SQLite, Alembic, Pydantic v2 |
| Frontend | Svelte 5, SvelteKit, Tailwind CSS v4, DaisyUI v5 |
| Auth | Session cookies, optional OIDC (Authlib) |
| Deployment | Docker, Docker Compose |
| Package managers | uv (Python), npm (Node) |
| Testing | pytest + pytest-cov (backend), Vitest + Testing Library (frontend), Playwright (E2E) |
See the Developer Setup guide for instructions on running LibrisLog locally, running tests, and using the CLI tool.
This project was developed with the assistance of AI coding tools under a human-supervised workflow. No AI-generated code is committed without human review and approval.
MIT