Skip to main content
Personal library · Encrypted

Your library,
locked and lit.

Calibrary turns your Calibre e-book collection into a private, password-protected reading room — encrypted at rest, hostable on any static server, and lovely to read on any device.

256-bit
AES-GCM encrypted
0 servers
Fully static, any host
2 langs
English / Russian UI
1 folder
Upload dist/ & done
The reading room

A library that feels like a library

Cover-first shelves, real reading, and a lock on the door — not a folder of files.

Locked by default

Locked before it's loaded

Every visit starts at a login page. Your passphrase derives the decryption key in your browser — until then, there's nothing on the page but ciphertext.

  • Passphrase → PBKDF2 key, derived client-side.
  • Every page, cover & book stored as .enc ciphertext.
  • Ships noindex — search engines skip it.
Calibrary unlock screen asking for a passphrase.
Browse

A reading room, not a file list

The home page opens onto cover-first shelves, a few honest stats, and whatever you shelved most recently — the way a personal library should greet you.

  • Cover-first grids by title, author, series & genre.
  • Live as-you-type search by title or author.
  • Series shown in reading order.
Calibrary home page with stats and a recently-shelved cover grid.
Read

Read here, or take it with you

Open any book in the built-in EPUB reader, or download the file to read wherever you like. Each book page links onward to more by the author and the rest of its series.

  • In-browser EPUB reader (epub.js).
  • Or download the decrypted book file.
  • “More by this author” & full series links.
A Calibrary book detail page with cover, download and read options.
Private by design

Encrypted at rest. Yours at the door.

Calibrary isn't a folder behind a password prompt — the files themselves are ciphertext. It's real client-side encryption, so it works on any static host with no server config at all.

Ships noindex / robots: Disallow. On plain HTTP (LAN, iOS Safari) it falls back to a pure-JS crypto implementation automatically.

1
You enter your passphrase
Nothing leaves the browser — no server ever sees it.
2
PBKDF2 derives an AES-256 key
Computed locally with a per-build random salt.
3
Pages, covers & books decrypt locally
Every .enc payload is opened in-page, on the fly.
Everything in the box

One generator, a whole reading room

Password gate

The whole site opens behind a single passphrase — a login page, then your shelves.

Encrypted at rest

Every page, cover, and book is AES-256-GCM ciphertext on disk.

Built from Calibre

Reads your metadata.db, covers, and book files — no export dance.

Fully static

No backend, no runtime DB. Upload dist/ to any host or FTP.

Read or download

In-browser EPUB reader, or grab the file to read anywhere.

Live search

As-you-type dropdown by book title or author — instant, client-side.

Read Next queue

Bookmark books into a personal reading queue, kept per browser.

Bilingual UI

English / Russian interface toggle; your book content is left as-is.

How it works

From Calibre to a locked library in four steps

Runs on Node.js 22+ (it uses the built-in node:sqlite — no database driver to install).

STEP 01

Point at your library

# folder with metadata.db CALIBRE_DIR="~/Calibre Library"
STEP 02

Set a passphrase

# git-ignored, never committed echo 'your secret' > library-password.txt
STEP 03

Build

npm install npm run build ✓ encrypted → dist/
STEP 04

Upload & read

# any host or FTP upload dist/ ✓ open, unlock, read

On macOS you can double-click rebuild.command to rebuild and (optionally) mirror to a local server share. Full details in the README.

Built with
node:sqlite epub.js JSZip node-forge Vanilla JS + CSS
Node 22+ · Static · Private

Keep your library yours

A book-themed reading room you host yourself, locked with a passphrase and readable on any device. Clone it and build your own.

View source on GitHub Read the setup
$ git clone https://github.com/drewaltukhov/calibrary.git