Beautiful EPUB generation service - the cloud-based alternative to Vellum
Project description
๐ BookForge
Beautiful EPUB generation service
Transform your markdown files into professional ebooks with just a few clicks, API calls, or command-line commands. BookForge makes professional ebook creation accessible to everyone, everywhere.
โจ Features
๐ Three Ways to Create EPUBs
- ๐ฑ Web Interface - Drag & drop files, fill forms, download EPUBs
- ๐ป Command Line - Perfect for developers and automation
- ๐ REST API - Integrate with any application or service
๐จ Beautiful Themes
- Modern - Clean, contemporary design for technical content
- Classic - Traditional book styling for literature and formal works
- Minimal - Ultra-clean layout for distraction-free reading
๐ Professional Features
- โ EPUB 3 Compliant - Works on all major e-readers and platforms
- ๐ GitHub Integration - Generate directly from your repositories
- โก Async Processing - Handle large books without blocking
- ๐ Built-in Validation - Ensure your EPUBs meet quality standards
- ๐ Real-time Progress - Watch your book generation live
- ๐ Cross-platform - Works on any operating system
๐ Quick Start
Option 1: Web Interface (Easiest)
# Install and start the server
pip install -r requirements.txt
python -m bookforge.main
# Open your browser
open http://localhost:8000
Then simply drag your markdown files onto the interface and click "Generate EPUB"!
Option 2: Command Line (Fastest)
# Install BookForge
pip install -r requirements.txt
# Generate from local files
python -m bookforge.cli generate ./my-book \
--title "My Amazing Book" \
--author "Your Name" \
--theme modern
# Generate from GitHub
python -m bookforge.cli github https://github.com/username/my-book
Option 3: REST API (Most Powerful)
# Start the API server
python -m bookforge.main
# Generate via API
curl -X POST "http://localhost:8000/api/v1/generate/github" \
-H "Content-Type: application/json" \
-d '{
"github_url": "https://github.com/username/my-book",
"title": "My Amazing Book",
"author": "Your Name",
"theme": "modern"
}'
๐ฏ Use Cases
| Use Case | Best Method | Example |
|---|---|---|
| ๐ Self-Publishing | Web Interface | Upload manuscript chapters โ Choose classic theme โ Download EPUB |
| ๐ Documentation | GitHub Integration | Point to docs folder โ Auto-generate โ Distribute to team |
| ๐ Educational Content | Command Line | Batch process course materials โ Multiple formats |
| ๐ข Corporate Publishing | REST API | Integrate with CMS โ Automated ebook generation |
| ๐ค CI/CD Automation | API + GitHub Actions | Code docs โ Auto-publish โ Deploy to platforms |
๐ Why Choose BookForge?
๐ BookForge vs. Vellum
| Feature | Vellum | BookForge |
|---|---|---|
| Platform | Mac only | Cross-platform (Web, CLI, API) |
| Access | Desktop app | Browser, command line, API |
| Integration | Manual import | GitHub, CI/CD, automated |
| Collaboration | Single user | Team-friendly, version control |
| Cost | $250+ | Free, open source |
| Deployment | Desktop only | Self-hosted, cloud, SaaS |
| Automation | Manual process | Full automation support |
| Extensibility | Fixed features | Plugin system, customizable |
๐จ Professional Quality Output
- Standards Compliant - EPUB 3.0 with proper validation
- Cross-Reader Support - Works on Kindle, Apple Books, Kobo, Adobe Digital Editions
- Responsive Design - Adapts to different screen sizes and orientations
- Accessibility - Screen reader compatible with proper navigation
- Professional Typography - Carefully designed themes with proper spacing and fonts
๐ฑ Web Interface
Drag & Drop Simplicity
- Upload Files - Drag markdown files onto the upload area
- Fill Details - Enter title, author, and description
- Choose Theme - Preview and select your preferred styling
- Generate - Watch real-time progress as your EPUB is created
- Download - Get your professional EPUB instantly
GitHub Integration
- Enter any GitHub repository URL
- Specify folder paths for organized content
- Auto-detect book metadata from repository info
- Support for private repositories (with token)
Live Features
- Real-time Progress - See generation status updates live
- Validation Results - Instant feedback on EPUB quality
- Theme Previews - See exactly how your book will look
- Job History - Track and re-download previous generations
๐ป Command Line Interface
Basic Usage
# Generate from directory
bookforge generate ./my-book --title "My Book" --author "Me"
# Preview before generating
bookforge preview ./my-book
# List available themes
bookforge themes
# Generate from GitHub
bookforge github https://github.com/user/repo --theme classic
# Start web server
bookforge serve --port 8080
Advanced Examples
# Custom output location
bookforge generate ./docs --output ~/Books/documentation.epub
# Different language and publisher
bookforge generate ./novel \
--title "Mon Livre" \
--language fr \
--publisher "Maison d'รdition"
# Skip validation for faster generation
bookforge generate ./quick-test --no-validate
๐ REST API
Core Endpoints
POST /api/v1/generate/github- Generate from GitHub repositoryPOST /api/v1/generate/files- Generate from uploaded filesGET /api/v1/status/{job_id}- Check generation progressGET /api/v1/download/{job_id}- Download completed EPUBGET /api/v1/jobs- List recent jobs
Python Client Example
import requests
# Start generation
response = requests.post("http://localhost:8000/api/v1/generate/github", json={
"github_url": "https://github.com/username/my-book",
"title": "My Book",
"author": "Author Name",
"theme": "modern"
})
job_id = response.json()["job_id"]
# Check status
status = requests.get(f"http://localhost:8000/api/v1/status/{job_id}")
print(status.json())
# Download when complete
if status.json()["status"] == "completed":
epub = requests.get(f"http://localhost:8000/api/v1/download/{job_id}")
with open("my-book.epub", "wb") as f:
f.write(epub.content)
๐จ Themes & Styling
Modern Theme
- Best for: Technical documentation, business books, modern fiction
- Typography: Sans-serif fonts (System UI, Segoe UI, Roboto)
- Layout: Clean, spacious with clear hierarchy
- Colors: Blue accents with high contrast
Classic Theme
- Best for: Literature, academic works, formal publications
- Typography: Serif fonts (Times New Roman, Georgia)
- Layout: Traditional book formatting with centered titles
- Style: Elegant, time-tested design patterns
Minimal Theme
- Best for: Essays, contemplative works, focused reading
- Typography: Premium serif fonts (Charter, Georgia)
- Layout: Ultra-clean with generous whitespace
- Philosophy: Distraction-free, content-focused
๐ ๏ธ Installation & Setup
Requirements
- Python 3.9 or higher
- 1GB RAM minimum (2GB recommended)
- 500MB disk space for application
- Additional space for generated EPUBs
Installation
# Clone repository
git clone https://github.com/eristoddle/bookforge.git
cd bookforge
# Install dependencies
pip install -r requirements.txt
# Optional: Install in development mode
pip install -e .
Configuration
# Copy environment template
cp .env.example .env
# Edit configuration
vim .env
Key Settings
# Basic settings
DEBUG=false
DEFAULT_THEME=modern
EPUB_VALIDATION=true
# GitHub integration
GITHUB_TOKEN=your_token_here
# File storage
TEMP_DIR=./temp_books
OUTPUT_DIR=./generated_epubs
MAX_FILE_SIZE=50MB
# API settings
HOST=0.0.0.0
PORT=8000
MAX_CONCURRENT_JOBS=10
๐ณ Docker Deployment
Quick Start
# Run with Docker
docker run -p 8000:8000 bookforge/bookforge:latest
# Or with Docker Compose
curl -o docker-compose.yml https://raw.githubusercontent.com/bookforge/bookforge/main/docker-compose.yml
docker-compose up -d
Production Deployment
# docker-compose.prod.yml
version: '3.8'
services:
bookforge:
image: bookforge/bookforge:latest
ports:
- "8000:8000"
environment:
- DEBUG=false
- EPUB_VALIDATION=true
volumes:
- ./data:/app/data
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- bookforge
๐ค CI/CD Integration
GitHub Actions
name: Generate Documentation EPUB
on:
push:
paths: ['docs/**']
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install BookForge
run: pip install bookforge
- name: Generate EPUB
run: |
bookforge generate docs/ \
--title "Project Documentation" \
--author "Team" \
--output documentation.epub
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: documentation
path: documentation.epub
Jenkins Pipeline
pipeline {
agent any
stages {
stage('Generate EPUB') {
steps {
sh '''
pip install bookforge
bookforge generate docs/ \
--title "${JOB_NAME} Documentation" \
--author "DevOps Team" \
--output "${JOB_NAME}-docs.epub"
'''
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: '*.epub'
}
}
}
}
๐ Documentation
User Guides
- ๐ Quick Start Guide - Get up and running in minutes
- ๐ป Command Line Interface - Complete CLI reference
- ๐ Web Interface Guide - Using the visual interface
API Documentation
- ๐ REST API Reference - Complete API documentation
- ๐ Interactive API Docs - Swagger UI (when server is running)
Examples & Tutorials
- ๐ก Basic Usage Examples - Real-world scenarios
- ๐ CI/CD Integration - Automation examples
Developer Resources
- ๐๏ธ Architecture Overview - System design
- ๐ Deployment Guide - Production setup
- ๐ค Contributing Guide - How to contribute
๐ง Development
Local Development
# Clone and setup
git clone https://github.com/eristoddle/bookforge.git
cd bookforge
pip install -e ".[dev]"
# Run tests
pytest
# Start development server
python -m bookforge.main
# Format code
black bookforge/
isort bookforge/
# Type checking
mypy bookforge/
Project Structure
bookforge/
โโโ api/ # FastAPI endpoints
โโโ core/ # Core business logic
โ โโโ epub_generator.py # EPUB generation engine
โ โโโ markdown_processor.py # Markdown to HTML conversion
โ โโโ github_integration.py # GitHub API integration
โ โโโ validator.py # EPUB validation
โโโ static/ # Web interface assets
โโโ templates/ # EPUB and web templates
โโโ cli.py # Command line interface
โโโ main.py # FastAPI application
docs/ # Documentation
examples/ # Sample content
tests/ # Test suite
๐ Examples
Technical Documentation
# Project with organized docs
project-docs/
โโโ 01-introduction.md
โโโ 02-getting-started.md
โโโ 03-api-reference.md
โโโ 04-troubleshooting.md
bookforge generate ./project-docs \
--title "Project Documentation" \
--author "Development Team" \
--theme modern
Fiction Novel
# Novel manuscript
my-novel/
โโโ 00-prologue.md
โโโ 01-chapter-one.md
โโโ 02-chapter-two.md
โโโ 21-epilogue.md
bookforge generate ./my-novel \
--title "The Digital Odyssey" \
--author "Jane Author" \
--theme classic
Corporate Handbook
# Company policies
handbook/
โโโ 01-welcome.md
โโโ 02-policies.md
โโโ 03-benefits.md
โโโ 04-procedures.md
bookforge generate ./handbook \
--title "Employee Handbook" \
--author "HR Department" \
--publisher "ACME Corporation" \
--theme classic
๐ Support & Community
Getting Help
- ๐ Documentation - Comprehensive guides and tutorials
- ๐ GitHub Issues - Bug reports and feature requests
- ๐ฌ GitHub Discussions - Community support and ideas
- ๐ง Email Support - Direct help for complex issues
Contributing
We welcome contributions! See our Contributing Guide for details.
- ๐ Report bugs
- ๐ก Suggest features
- ๐ Improve documentation
- ๐ง Submit pull requests
- ๐ Star the repository
Community
- GitHub - Source code and issue tracking
- Discord - Real-time chat and support
- Twitter - Updates and announcements
- Blog - Tutorials and best practices
๐ License
BookForge is open source software licensed under the MIT License.
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
๐ Acknowledgments
BookForge is inspired by Vellum - the gold standard for ebook creation on Mac. We're grateful to the open source community and the following projects:
- FastAPI - Modern web framework
- Jinja2 - Template engine
- Markdown - Markdown processing
- Click - CLI framework
- BeautifulSoup - HTML parsing
๐ What's Next?
Roadmap
- ๐ Multiple Input Formats - DOCX, TXT, Google Docs support
- ๐ค AI Cover Generation - Automatic cover creation based on content
- ๐จ Custom Themes - Theme editor and marketplace
- ๐ More Output Formats - PDF, MOBI, print-ready files
- ๐ Enhanced Integrations - Notion, Confluence, GitBook
- ๐ Internationalization - Multi-language interface support
Enterprise Features (Coming Soon)
- ๐ฅ Team Management - User accounts and permissions
- ๐ Analytics Dashboard - Usage statistics and insights
- ๐ SSO Integration - Enterprise authentication
- โ๏ธ Cloud Storage - S3, Google Drive, Dropbox integration
- ๐ฏ White Label - Custom branding and deployment
๐ Transform your markdown into beautiful ebooks
๐ Try Web Interface โข ๐ Read Docs โข ๐ Report Issues โข ๐ฌ Join Discussion
Made with โค๏ธ by the BookForge team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bookforge-0.1.0.tar.gz.
File metadata
- Download URL: bookforge-0.1.0.tar.gz
- Upload date:
- Size: 44.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7553c4f63a7870cf226a9c5429a2c405ba0a3e90916da2ff77c88ead55817ad
|
|
| MD5 |
0d66895aee19b3d68250caaf8d2ecf09
|
|
| BLAKE2b-256 |
f6f0ff590d551efccfe8200f5765ca09cd3069a5c9f414f8e4079350a902f547
|
File details
Details for the file bookforge-0.1.0-py3-none-any.whl.
File metadata
- Download URL: bookforge-0.1.0-py3-none-any.whl
- Upload date:
- Size: 45.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb1c3d09acccc394260280a86798787d5e15e32703b2e1ac59d4d1a9c1bbd61e
|
|
| MD5 |
d99c0d600f60a04e6d4b33bd4ed03fa4
|
|
| BLAKE2b-256 |
7734d84ef548975e991afadeaa5563b986cbfb3b98ba25ce4808417be06a1f5a
|