GitHub - Programming2055/Booky: A beautiful, modern ebook library manager with built-in readers, PDF tools, and support for 7+ formats.

Your Personal eBook Library Manager

React TypeScript Vite License

A beautiful, modern ebook library manager with built-in readers, PDF tools, and support for 7+ formats.

FeaturesDemoInstallationUsageScreenshots


✨ Features

📖 Multi-Format Support

  • PDF - Mozilla pdf.js viewer with search, thumbnails & print
  • EPUB - Beautiful reflowable text
  • MOBI - Kindle format support
  • FB2 - Fiction Book format
  • CBZ - Comic book archives
  • AZW3 - Amazon Kindle format
  • DJVU - Continuous scroll with professional zoom

🎨 Beautiful Interface

  • Multiple Themes - Light, Dark, Sepia, Nord, Dracula
  • View Modes - Grid, List, Compact views
  • Sketch Styles - Hand-drawn book covers
  • Responsive Design - Works on any screen size
  • Smooth Animations - Polished user experience

📂 Library Organization

  • Collections - Create custom book collections
  • Search - Find books instantly
  • Metadata Editing - Update book info
  • Auto Cover Extraction - From PDFs automatically
  • Reading Progress - Track where you left off

🛠️ PDF Power Tools

  • Compress - Reduce file size
  • Rotate - Rotate pages
  • Extract Pages - Split PDFs
  • OCR - Make searchable
  • Watermark - Add text overlays
  • Convert to Images - Export as PNG/JPEG

🎬 Demo

🌐 Live Demo →

Note: The demo runs entirely in your browser. Add some ebooks to try it out!


🚀 Installation

git clone https://github.com/Programming2055/Booky.git
cd Booky
npm install
npm start

Windows Users: Double-click start.bat to launch!


📸 Screenshots

📚 Library View

Library View

📖 Reader View

Reader View

🌙 Dark Theme

Dark Theme

🛠️ PDF Tools

PDF Tools

⚙️ Settings

Settings


📖 Usage

  1. Click the + Add Book button in the header
  2. Select your ebook files (PDF, EPUB, MOBI, etc.)
  3. Books are automatically added with cover extraction

Reading Books

  • Click any book cover to open in the built-in reader
  • Use arrow keys or click edges to navigate pages
  • Press Escape to close the reader

Organizing Collections

  1. Click + New Collection in the sidebar
  2. Drag and drop books into collections
  3. Right-click collections to rename or delete

Using PDF Tools

  1. Open any PDF in the reader
  2. Click the 🔧 Tools button in the toolbar
  3. Select a tool (requires Stirling-PDF)

⌨️ Keyboard Shortcuts

Shortcut Action
/ Previous / Next page
Escape Close reader
+ / - Zoom in / out
Ctrl + F Search in book

Note: PDF reader uses the standard Mozilla pdf.js viewer which has its own toolbar and keyboard shortcuts.


📋 Format Support

Format Built-in Reader System App Notes
PDF Mozilla pdf.js viewer with full toolbar
EPUB - Reflowable text, TOC support
MOBI - Kindle format
FB2 - Fiction Book format
CBZ - Comic book archive
AZW3 - Amazon Kindle
DJVU Vertical scroll, fit-width/fit-page zoom

🔧 PDF Tools Setup

Booky integrates with Stirling-PDF for advanced PDF operations.

Using Docker (Recommended)

docker run -d -p 8080:8080 --name stirling-pdf frooodle/s-pdf:latest

Using Docker Compose

services:
  stirling-pdf:
    image: frooodle/s-pdf:latest
    ports:
      - "8080:8080"
    restart: unless-stopped

Once running, the 🔧 Tools button in the PDF reader will be active!


🏗️ Tech Stack


📁 Project Structure

booky/
├── 📂 public/
│   ├── 📂 foliate-js/      # EPUB/MOBI reader engine
│   ├── 📂 pdfjs/           # Mozilla pdf.js viewer (v4.10.38)
│   ├── djvu.js             # DJVU support
│   └── booky-icon.svg      # App icon
├── 📂 server/
│   └── ebook_server.py     # Python server for system apps
├── 📂 src/
│   ├── 📂 components/
│   │   ├── BookCard/       # Book cover cards
│   │   ├── BookGrid/       # Library grid view
│   │   ├── EbookReader/    # EPUB/MOBI/FB2 reader
│   │   ├── PdfReader/      # pdf.js viewer iframe wrapper
│   │   ├── PdfTools/       # Stirling-PDF integration
│   │   ├── CollectionTree/ # Sidebar collections
│   │   └── ...
│   ├── 📂 context/         # React context (state)
│   ├── 📂 services/        # IndexedDB, API services
│   └── 📂 types/           # TypeScript definitions
├── package.json
└── README.md

🤝 Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Ideas for Contributions

  • Cloud sync support
  • Book recommendations
  • Reading statistics
  • Annotation export
  • More themes

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments


Made with ❤️ for book lovers

⭐ Star this repo if you find it useful!