Skip to main content

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.

BookForge Hero

License: MIT Python 3.9+ FastAPI EPUB 3


โœจ 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

  1. Upload Files - Drag markdown files onto the upload area
  2. Fill Details - Enter title, author, and description
  3. Choose Theme - Preview and select your preferred styling
  4. Generate - Watch real-time progress as your EPUB is created
  5. 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 repository
  • POST /api/v1/generate/files - Generate from uploaded files
  • GET /api/v1/status/{job_id} - Check generation progress
  • GET /api/v1/download/{job_id} - Download completed EPUB
  • GET /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

API Documentation

Examples & Tutorials

Developer Resources


๐Ÿ”ง 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:


๐Ÿš€ 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bookforge-0.1.0.tar.gz (44.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bookforge-0.1.0-py3-none-any.whl (45.1 kB view details)

Uploaded Python 3

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

Hashes for bookforge-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c7553c4f63a7870cf226a9c5429a2c405ba0a3e90916da2ff77c88ead55817ad
MD5 0d66895aee19b3d68250caaf8d2ecf09
BLAKE2b-256 f6f0ff590d551efccfe8200f5765ca09cd3069a5c9f414f8e4079350a902f547

See more details on using hashes here.

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

Hashes for bookforge-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cb1c3d09acccc394260280a86798787d5e15e32703b2e1ac59d4d1a9c1bbd61e
MD5 d99c0d600f60a04e6d4b33bd4ed03fa4
BLAKE2b-256 7734d84ef548975e991afadeaa5563b986cbfb3b98ba25ce4808417be06a1f5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page