https://github.com/gjessing1/epub-bookprep
A lightweight Privacy First EPUB Metadata editor
https://github.com/gjessing1/epub-bookprep
docker ebooks epub epub-editor epub2 epub3 isbn-lookup metadata-editor selfhosted-apps
Last synced: 5 months ago
JSON representation
A lightweight Privacy First EPUB Metadata editor
- Host: GitHub
- URL: https://github.com/gjessing1/epub-bookprep
- Owner: Gjessing1
- License: mit
- Created: 2025-12-29T15:10:51.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-07T10:05:10.000Z (5 months ago)
- Last Synced: 2026-01-09T00:28:23.431Z (5 months ago)
- Topics: docker, ebooks, epub, epub-editor, epub2, epub3, isbn-lookup, metadata-editor, selfhosted-apps
- Language: JavaScript
- Homepage:
- Size: 3.24 MB
- Stars: 16
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://github.com/mgmeyers/bentopdf) in both philosophy and workflow.*
## Live demo (temporary)
A public demo is available for testing and evaluation:
👉 **[Try the demo](https://gjessing.io/epub/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)
## 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`](/examples/docker-compose.yml)
- Start the service from the same directory:
```bash
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
## Like the project?
Please consider buying me a coffe, I really do drink it alot!