Skip to content

Toshik1978/folio

Repository files navigation

Build Tests Coverage Web Tests Web Coverage

Folio

Folio logo

Self-hosted, read-only digital book library manager. Catalogues, indexes, and distributes personal e-book collections through a web UI and an OPDS feed.


Screenshots

Library grid with cover thumbnails

Book detail with metadata and annotation Full-text search results
Book detail — metadata, identifiers, annotation, downloads Full-text search across the catalogue
Browse authors by alphabet
Alphabetical browse by author (also series, tags, publishers)

Demo library shown above uses public-domain titles from Project Gutenberg.


Quick Start

docker run -p 8080:8080 \
  -v /path/to/library:/library:ro \
  -v folio-data:/data \
  ghcr.io/toshik1978/folio:latest

Open http://localhost:8080. Mount your book sources read-only at /library; Folio indexes them into its own SQLite database at /data.

Build from source instead
docker build -t folio .
docker run -p 8080:8080 -v /path/to/library:/library:ro -v folio-data:/data folio

Quick Reference

Aspect Value
Module github.com/Toshik1978/folio
Go version 1.26
Binary folio-idx
Default port 8080 (env PORT)
Database SQLite 3 + FTS5
Frontend Vue 3 · TypeScript · Tailwind CSS v4 · DaisyUI · PrimeIcons
Deployment Single Docker container (multi-stage build)

Documentation Map

Document Contents
ARCHITECTURE.md System overview, core constraints, deployment model, project structure.
BACKEND.md Go server: routing, SPA embedding, middleware, health check.
EBOOK-PARSING.md Per-format metadata & cover extraction (epub/fb2/mobi/pdf), annotation pipeline.
FRONTEND.md Vue 3 SPA: Vite, TypeScript, Tailwind v4 + DaisyUI, theming, dev proxy.
DATABASE.md SQLite schema, FTS5 search, ingestion sources, sync engine.
API.md REST API, OPDS catalog, file streaming strategy.
SYNC-EVENTS.md Real-time sync status via Server-Sent Events (SSE), event broker, progress reporting.
NETWORKING.md Security model: OPDS Basic Auth, bring-your-own authenticator for the UI/API, CSRF guard.
BUILD-AND-DEPLOY.md Taskfile targets, Docker multi-stage build, local dev workflow.
RELEASE_NOTES.md Curated, human-readable highlights of each release.
CHANGELOG.md Dated history of notable changes, with the rationale behind each.

Contributing with an AI agent? Start with AGENTS.md — setup commands, task rules, and a task-to-doc map. Claude Code loads it automatically via CLAUDE.md, which simply imports AGENTS.md.


Core Constraints

These invariants apply project-wide. Every design decision must respect them.

  1. Read-Only — The application never modifies, writes to, or reorganizes source book files or external databases.
  2. No Embedded Reader — The UI catalogues, filters, and serves downloads. It does not render e-book content.
  3. Resource Efficient — Designed for low-spec hosts (NAS, Raspberry Pi, minimal VPS). Minimal memory, single binary, no external services.

About

Self-hosted, read-only e-book library manager. Catalogues, indexes, and serves your personal EPUB/FB2/MOBI/PDF/Calibre collection through a fast Vue web UI and an OPDS feed. Ships as a single static, CGO-free Go binary in a distroless container.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors