Go to file
Ivo Oskamp 92cd301658 Add PDF reader/editor support, fix metadata save and dir cleanup
- PDF reader: page-image rendering via /library/pdf/{filename}?page=N;
  new /api/pdf/info/{filename} endpoint returns page count; reader.html
  branches on FORMAT (epub/pdf) injected by server
- PDF metadata edit: PATCH /library/book now updates DB for all formats;
  _sync_epub_metadata only called for .epub; non-EPUB formats skip file write
- Fix file path on metadata save: _make_rel_path now includes format prefix
  (epub/, pdf/, comics/) matching common.make_rel_path used during import;
  previously files were moved outside their format directory
- Fix empty dir cleanup: prune_empty_dirs always runs after successful
  metadata save, not only when file was moved
- Hide Edit EPUB button for non-EPUB files in book detail
- Docs: TECHNICAL.md and changelog-develop.md updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-25 08:47:01 +01:00
containers/novela Add PDF reader/editor support, fix metadata save and dir cleanup 2026-03-25 08:47:01 +01:00
docs Add PDF reader/editor support, fix metadata save and dir cleanup 2026-03-25 08:47:01 +01:00
stack Standardize remaining UI/config text to English 2026-03-22 19:46:48 +01:00
.gitignore Update gitignore for local and Python cache files 2026-03-22 16:14:05 +01:00
build-and-push.sh Bootstrap Novela 2.0 implementation and docs 2026-03-22 16:13:45 +01:00
README.md Add AI-assisted development disclaimer to README 2026-03-22 19:40:29 +01:00

Novela

Novela is a self-hosted web application for managing and reading a personal digital library. It supports EPUB, PDF, and CBR/CBZ, with metadata editing, reading progress tracking, and Dropbox backups.

What Novela Provides

  • Library import and indexing for EPUB/PDF/CBR/CBZ
  • Home dashboard with continue reading and unread/read sections
  • Reader support for EPUB, PDF, and comics (CBR/CBZ)
  • Metadata editing (title, author, publisher, series, volume, tags, genres)
  • New review workflow with list/grid view, column toggles, and bulk actions
  • Reading analytics/statistics dashboard
  • Dropbox backup with:
    • versioned snapshots
    • object deduplication
    • retention policy
    • scheduled background runs

Tech Stack

  • FastAPI
  • Jinja2 templates + vanilla JavaScript
  • PostgreSQL 16
  • Docker / Docker Compose style deployment

Repository Layout

  • containers/novela/ - application code (routers, templates, static assets, migrations)
  • stack/ - deployment stack files and environment configuration
  • docs/ - technical status and changelog documentation
  • build-and-push.sh - helper script for container build/push

Quick Start (Development)

  1. Configure environment values in stack/novela.env.
  2. Start the stack using your preferred Docker workflow (Compose/Portainer stack).
  3. Open the app and complete backup credential setup on /backup if needed.

Key Environment Variables

  • POSTGRES_DB
  • POSTGRES_USER
  • POSTGRES_PASSWORD
  • NOVELA_MASTER_KEY
  • CONFIG_DIR
  • LIBRARY_DIR (optional override)

Documentation

  • Technical status: docs/TECHNICAL.md
  • Develop changelog: docs/changelog-develop.md

Disclaimer

This project was developed entirely with AI-assisted implementation workflows. Use it at your own discretion and responsibility, and validate behavior, security, and data handling for your environment before production use.

Status

This repository is actively evolving. The develop documentation reflects implemented behavior in the current codebase.