📚 Bookish

Convertitore e reader di ebook self-hostato — Flask, Pandoc, WeasyPrint.

Carica un ebook in qualsiasi formato, convertilo in un altro, o leggilo direttamente nel browser con un reader completo.


Funzionalità

🔄 Convertitore

Formato Input Output
EPUB ✅ ✅
PDF ✅ ✅
DOCX ✅ ✅
Markdown ✅ ✅
Testo (TXT) ✅ ✅
HTML ✅ ✅
FB2 ✅ ✅
MOBI ✅ ❌
LaTeX ✅ ✅
  • Drag & drop upload
  • Barra progresso in tempo reale (SSE)
  • Download automatico del convertito

📖 Reader

  • EPUB via epub.js
  • PDF via pdf.js
  • Testo/Markdown/DOCX/FB2/HTML convertiti e renderizzati

Caratteristiche reader:

  • Zoom e regolazione font
  • Temi: chiaro, scuro, seppia
  • Ricerca full-text
  • Indice navigabile
  • Segnalibri e salvataggio posizione
  • Vista singola/doppia pagina
  • Navigazione tastiera
  • Fullscreen

⚙️ Motore di conversione

  • Pandoc come motore primario (decine di formati)
  • WeasyPrint per PDF con layout avanzato
  • python-docx per DOCX con stili
  • BeautifulSoup per post-processing HTML/tabelle

Requisiti

  • Python 3.10+
  • Pandoc (incluso via pypandoc-binary)
  • Librerie di sistema per WeasyPrint (libpango, libcairo)

Installazione

git clone http://192.168.0.183:8085/truetype/bookish.git
cd bookish
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Avvio

./run.sh
# oppure su porta specifica:
./run.sh 8080

L'app cerca automaticamente una porta libera a partire da quella specificata.

Apri il browser su http://localhost:5000 (o la porta assegnata).


Architettura

bookish/
├── app.py                     # Entry point
├── config.py                  # Configurazioni
├── requirements.txt
├── run.sh
├── bookish/
│   ├── __init__.py            # Flask factory
│   ├── routes/
│   │   ├── convert.py         # Upload, SSE progress, download
│   │   └── reader.py          # Reader view
│   ├── services/
│   │   ├── converter.py       # Conversione Pandoc + pipeline
│   │   ├── sse_manager.py     # SSE progress manager
│   │   └── formatter.py       # PDF/HTML post-processing
│   ├── templates/
│   │   ├── base.html          # Layout base
│   │   ├── index.html         # Convertitore
│   │   └── reader.html        # Reader
│   └── static/
│       ├── css/style.css
│       ├── js/main.js         # Frontend convertitore
│       ├── js/reader.js       # Frontend reader
│       └── logo.svg
├── uploads/                   # File caricati (temporanei)
├── converted/                 # File convertiti (temporanei)
└── docs/                      # Documentazione

Vedi docs/architecture.md per dettagli.


Deployment

Adatto per Proxmox LXC, Docker o VM leggera. Vedi docs/deploy.md.


Licenza

MIT

S
Description
App Flask per conversione e lettura ebook
Readme
184 KiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 45.1%
Python 26.6%
CSS 16%
HTML 12.1%
Shell 0.2%