https://github.com/codebude/librislog
Just a book tracker.
https://github.com/codebude/librislog
book-tracker books reading-time reading-tracker self-hosted selfhosted
Last synced: 1 day ago
JSON representation
Just a book tracker.
- Host: GitHub
- URL: https://github.com/codebude/librislog
- Owner: codebude
- License: mit
- Created: 2026-05-10T08:31:36.000Z (24 days ago)
- Default Branch: main
- Last Pushed: 2026-06-01T21:47:37.000Z (2 days ago)
- Last Synced: 2026-06-01T23:16:24.096Z (2 days ago)
- Topics: book-tracker, books, reading-time, reading-tracker, self-hosted, selfhosted
- Language: Python
- Homepage: https://codebude.github.io/librislog/
- Size: 21.2 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# LibrisLog
๐ 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.
---
## Quick Start
```bash
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 -d
```
Open **http://localhost:8001** and create your account.
---
## Screenshots
---
## Why LibrisLog?
- **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.
---
## Features
- **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
---
## API
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](https://codebude.github.io/librislog/api/) for details.
```bash
cd backend
uv sync
uv run alembic upgrade head
uv run uvicorn app.main:app --reload
```
---
## Stack
| 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) |
---
## Contributing
See the [Developer Setup](https://codebude.github.io/librislog/guide/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.
## License
MIT
## Star History