// the full tour
Everything Calibarr does
A self-hosted e-book library manager with a modern stack — Next.js · Fastify · SQLite (FTS5) · Docker — and a privacy-first AI reading companion. Here's the whole surface area.
// 01
Library & browsing
Virtualised cover grid
Windowed rendering + infinite scroll (pages of 200) keeps thousands of books buttery smooth.
Four views + density
Covers, small covers, a details table, and grouped-by-series — with a compact/cozy/roomy density toggle. Remembered per browser.
Search-as-you-type
FTS5 across title, author, series, tags & description, ranked by relevance.
Faceted filters
Author, tag, format, language, series, has-cover, reading status & rating — with live counts that track the current search.
Shelves
User-defined collections with drag-to-reorder, add from the bulk bar or right-click, and OPDS nav sections.
Saved searches
Pin any search + filters + sort as a named virtual library.
Ratings & identifiers
1–5★ ratings and arbitrary identifiers (ASIN/Goodreads/Google/DOI…) as click-through links.
Command palette
⌘K to search and run per-book actions or import — keyboard-first.
// 02 — the differentiator
AI reading companion
Off by default. Bring a cloud key (Anthropic/OpenAI) or run it fully local (Ollama). Spoiler-safe by construction — it only sees text up to your position.
Story so far
A spoiler-free recap up to your exact reading position.
Ask this book
Grounded Q&A over what you've read, with chapter citations (RAG, or whole-context on a chat-only provider).
Character / term lookup
Select a name or word → a spoiler-safe "who/what is this."
Semantic library search
Search by meaning across the library; each hit shows the passage that matched.
More like this
Content-similarity recommendations from per-book embeddings.
AI auto-enrich
Infer genre/theme tags, a reading level, and a one-line hook — no external metadata service.
// 03
Read in the browser
EPUB reader
epub.js — paginated, arrow/edge-click nav, last location & progress remembered per book.
Reader customization
Theme (light/sepia/dark), font, size, line-spacing, margins and right-to-left, saved across books.
PDF reader
pdf.js continuous scroll with a real text layer.
Auto reading status
Opening a book marks it reading; reaching the end marks it finished.
// 04
Import & metadata
Drag-drop import
Files or whole folders (recursively, batched) with a live per-file log and summary.
Pure-JS extraction
EPUB OPF, PDF Info + XMP, and MOBI/AZW3 EXTH (title/authors/ISBN/cover) — no Calibre needed.
Filename fallback
Robust Author↔Title disambiguation (Mc/Mac/O', articles, sort form, initials).
Four metadata sources
Open Library, Google Books, ISBNdb & Hardcover, plus Auto — with keyless cover fallbacks.
Duplicate handling
Exact-hash skip and same-book-different-format merge (by ISBN or title+author).
Import a Calibre library
Read metadata.db and copy in every book, cover & format — copy or hardlink, read-only w.r.t. Calibre.
// 05
Convert & deliver
Format conversion
EPUB/MOBI/AZW3/PDF via a native (no-Calibre) path where possible, else Calibre — queued with live progress.
Send to Kindle
Email any book (auto-converting to EPUB first if needed) via your own SMTP.
OPDS 1.2 & 2.0
Atom and JSON feeds for KOReader, Marvin, Thorium, etc. — search, sort, per-format downloads.
KOReader progress sync
A built-in kosync server so your reading position follows you across e-readers.
// 06
Automate & integrate
Watch / ingest folder
Drop files into INGEST_DIR → auto-imported and consumed. Great for arr-style pipelines.
Outgoing webhooks
POST signed JSON on book.added / book.converted — per-hook event filters + a test ping.
Auto-fetch on import
Optionally fetch missing metadata & covers for new books in the background.
Auto-send on import
Optionally email every newly imported book straight to your Kindle.
// 07
Self-host & operations
Multi-user auth
Local accounts (scrypt), admin management, OPDS HTTP-Basic, reverse-proxy trusted-header mode, or fully open.
Backups
Hot SQLite backups — create/download/restore, scheduled with retention (restore snapshots first).
Health & logging
Structured logs + an admin health dashboard (versions, disk, job stats, recent errors).
Versioned migrations
Schema tracked by PRAGMA user_version, applied transactionally on start.
One-container Docker
Multi-arch (amd64 · arm64) image with Calibre baked in; runtime-configurable web→API URL.
MIT licensed
Your code, your rules. (The image bundles Calibre, which is GPLv3 — details in the README.)