-
2026.09.25
StableBuild, Scan & Publish Image / build-scan-push (release) Successful in 12m9sreleased this
2026-09-25 14:45:04 +00:00 | 3 commits to main since this releaseDisclaimer
This project was initially created for personal use, but I think more people could benefit from it either by using it as is or by forking it and create their own one.
Meet kovi
kovi is a local-first, self-hosted reading dashboard for KOReader. It turns your KOReader statistics database and device
syncs into a cover-first library, reading-time charts, a month calendar, and real highlights/notes — all in a single Node
process with one SQLite file and no external services.Highlights:
- Drag-and-drop import of statistics.sqlite3, with defensive validation and transactional, idempotent writes.
- LAN pairing via one-use codes and revocable per-device tokens; incremental sync with a one-day overlap and changed-
sidecar-only annotation updates. - Automatic cover enrichment — embedded KOReader covers, ISBN/Open Library/Google Books lookup, and a Calibre-backed
fallback in the container — with retry actions and cover history. - A responsive light/dark dashboard: sortable library with read filters, filterable reading-rhythm heatmap, interactive
daily reading-time graph, month calendar, and Status/backup/export pages. - Docker-first deployment (non-root, bundled Calibre) or npm start on Node.js 22+.
The web UI intentionally ships without user accounts; keep it on a trusted network or behind an authenticated reverse proxy.
Device endpoints use separate revocable tokens. See SECURITY.md.Downloads