Skip to content

Programming2055/Booky

Repository files navigation

πŸ“š Booky

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.

Features β€’ Demo β€’ Installation β€’ Usage β€’ Screenshots


✨ 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

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

Technology Purpose
React UI Framework
TypeScript Type Safety
Vite Build Tool
IndexedDB Local Storage
PDF.js PDF Rendering
Foliate-js EPUB/MOBI Reader
Flask Python Server

πŸ“ 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!

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors