No description
  • JavaScript 73%
  • CSS 15.8%
  • HTML 11%
  • Dockerfile 0.2%
Find a file
Gjessing1 fcd16f3a3f
All checks were successful
docker / build-and-push (push) Successful in 5s
docker / deploy (push) Successful in 13s
ci: auto-deploy after successful main build
Add a deploy job that runs on the host docker daemon after build-and-push,
pulling the freshly-pushed git.gjessing.io/gjessing1/epub-editor:latest image
and restarting the epub-bookprep stack.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 20:44:35 +00:00
.forgejo/workflows ci: auto-deploy after successful main build 2026-06-19 20:44:35 +00:00
.github/workflows Add GitHub Actions workflow for Docker image build 2025-12-30 14:39:00 +01:00
examples Add epub-bookprep service to docker-compose 2025-12-30 14:50:13 +01:00
public Update app code and dependencies 2026-06-13 16:52:32 +00:00
.dockerignore Add examples directory to .dockerignore 2025-12-29 17:35:54 +01:00
.gitignore ci: add Forgejo Actions workflow and gitignore 2026-06-12 13:39:23 +00:00
Dockerfile Add Dockerfile for Node.js application 2025-12-30 14:36:44 +01:00
epub.js Update app code and dependencies 2026-06-13 16:52:32 +00:00
LICENSE Initial commit 2025-12-29 16:10:51 +01:00
metadata.js Update app code and dependencies 2026-06-13 16:52:32 +00:00
package-lock.json Update app code and dependencies 2026-06-13 16:52:32 +00:00
package.json Update app code and dependencies 2026-06-13 16:52:32 +00:00
README.md Update README.md 2026-01-15 21:52:07 +01:00
server.js Update app code and dependencies 2026-06-13 16:52:32 +00:00

EPUB BookPrep

EPUB BookPrep is a selfhosted, privacy-first, stateless web tool for preparing clean, standards-compliant EPUB metadata. Upload a file, make precise edits, and download a corrected EPUB, no accounts, no background processing, and no files stored on the server.

  • Simple install with Docker image available.
  • No configuration necessary

The project is inspired by BentoPDF in both philosophy and workflow.

Latest release GitHub stars

Live demo (temporary)

A public demo is available for testing and evaluation:

👉 Try the demo

The demo is intended for light, manual testing only.
Uploaded files are processed in memory and are not stored, but availability and uptime are not guaranteed.
For regular use, self-hosting via Docker is recommended.

Features

  • Inspect and edit common EPUB metadata fields
    (title, author, language, publisher, series, identifiers, description)
  • Fetch metadata from public sources using ISBN or title-based search
  • Review and selectively apply fetched metadata to avoid incorrect matches
  • Search for available cover images, preview alternatives, and explicitly choose whether to replace or keep the existing cover
  • Clean and normalize metadata:
    • trim whitespace
    • normalize date formats
    • strip HTML from descriptions
    • deduplicate subjects
  • Preview how metadata will appear in OPDS-based clients before importing into a library or reader
  • EPUB 3 editor with EPUB 2 backward compatability
  • Extremely lightweight: the Docker container uses under 30 MB of host memory, as all processing happens in the browser.
  • Light and dark mode support

Screenshots (Mobile view)

Mobile view Mobile view Mobile view Mobile view Mobile view

Key principles

  • Uploaded files are processed entirely in memory and are never stored on disk. Once a request completes, no files or metadata remain on the server.
  • The app only modifies EPUB metadata (OPF and related fields). Book content, structure, and reading experience are left untouched.
  • The tool avoids deep EPUB “repair” or content manipulation to ensure results are easy to understand and trust.
  • Only EPUB files are supported. Other ebook formats are intentionally out of scope.
  • The application runs out of the box with no required configuration or environment variables.

What this tool is not

Not an ebook library manager Not a reader application Not a full EPUB editor or authoring tool Not a replacement for Calibre or Sigil

Typical use case

Upload an EPUB file

  • Inspect and adjust metadata (title, author, language, series, cover, etc.)
  • Optionally enrich metadata from public sources
  • Download a cleaned EPUB
  • Import the result into your library or reader of choice

Deployment

The application is distributed as a Docker container and can be run either behind a reverse proxy or directly via a mapped port. No volumes are required, as uploaded files are processed entirely in memory and never persisted.

  • Download the example compose file: docker-compose.yml
  • Start the service from the same directory:
    docker compose up -d
    
  • The application listens on port 3007 by default.
  • Access it via http://localhost:3007, or expose it through a reverse proxy such as Caddy, Traefik, or Nginx

Found a bug or missing a feature?

  • Found a bug or have an idea for an improvement? Open an issue in the repository and Ill take a look.

Like the project?

Please consider buying me a coffe, I really do drink it alot!