Skip to content

jinnit09786/libroshelf

Repository files navigation

English | 繁體中文


LibroShelf

A modern, elegant ebook library manager built with React, TypeScript, and Electron. Organize, browse, and manage your digital book collection with ease.

πŸ“₯ Download for Windows

Recommended for Windows users: Download the latest installer from Releases

Simply download LibroShelf-Setup-1.0.0.exe and install - no need to build from source!

Why LibroShelf?

πŸ“š Better Than Windows File Explorer

Traditional file managers fall short when it comes to managing ebooks. LibroShelf solves these problems:

Challenge Windows Explorer LibroShelf
Visual Browsing Only shows filenames and generic icons Beautiful cover thumbnails for every book
Scattered Collections Books spread across multiple folders (Downloads, Documents, External Drives) Unified library view - see all books in one place regardless of location
Organization Rigid folder hierarchy - one book, one location Flexible categories - assign multiple categories per book without moving files
Book Discovery Difficult to find books by author or year Smart search across title, author, publisher, and metadata
Reading Status No tracking available Track reading progress and recently opened books

✨ Key Advantages

  • Visual Library: Browse your collection with actual book covers, not just filenames
  • Centralized Management: Books stored in different drives/folders? No problem - LibroShelf brings them all together in one unified interface
  • Easy File Organization: Effortlessly move books to their corresponding category folders - a task that would be extremely tedious in File Explorer. Directly relocate original files to pre-created category folders with simple clicks
  • Smart Metadata: Automatically fetch book information from Google Books API
  • Batch Operations: Import entire folders, assign categories to multiple books at once

Perfect for organizing large ebook collections scattered across different folders and locations on your computer.

Features

  • Multi-Format Support: EPUB, PDF, AZW3, and MOBI formats
  • Dual Mode: Works as both a web application and desktop app (Electron)
  • Smart Cover Extraction: Automatically extracts book covers or generates beautiful gradient covers
  • Category Management: Organize books with custom categories and virtual smart categories
  • Automatic Metadata: Integration with Google Books API for automatic book metadata retrieval
  • Advanced Search: Quick search across titles, authors, and descriptions
  • Multi-Selection: Batch operations for category assignment and deletion
  • Modern UI: Clean, responsive interface built with Tailwind CSS
  • Bilingual Interface: Full support for English and Traditional Chinese

Screenshots & Demo

Main Library View

Main Interface Browse your entire collection with beautiful cover thumbnails

Quick Demo

πŸ“₯ Batch Import from Folder

Batch Import Demo Import entire folders of books in seconds - automatically detects covers and metadata

🏷️ Category Management

Category Management Demo Organize books by assigning them to categories

πŸ” Library Search

Search Demo Quickly find books by searching titles, authors, or metadata

πŸ“– Unified Library View

Unified View All your books in one place, regardless of where they're stored

Installation

Web Version (Browser Mode)

  1. Install dependencies:

    npm install
  2. Start development server:

    npm run dev

    Open http://localhost:3000 in your browser.

  3. Build for production:

    npm run build
    npm run preview

Desktop Version (Electron)

  1. Install dependencies:

    npm install
  2. Run Electron app:

    npm run electron
  3. Build distributable:

    npm run electron:build

    Find the installer in dist-electron/ folder.

Usage

Adding Books

  • Single Book: Click the "Add Book" button and either upload a file or enter metadata manually
  • Batch Import: Click the folder icon to import an entire directory of ebooks
  • Auto-Categorization: Books imported from folders are automatically categorized based on parent directory names

Managing Categories

  • Create custom categories with icons
  • Assign books to multiple categories
  • Use virtual categories:
    • All Books: View your entire collection
    • Recently Read: Books you've opened recently
    • Uncategorized: Books without assigned categories

Language Switching

Click the language toggle in the header to switch between English and Traditional Chinese.

Technology Stack

  • Frontend: React 19, TypeScript, Tailwind CSS
  • Desktop: Electron
  • Build Tools: Vite, electron-builder
  • Ebook Processing: pdf.js, JSZip
  • Data Storage: IndexedDB
  • API Integration: Google Books API
  • Internationalization: react-i18next

Project Structure

libroshelf/
β”œβ”€β”€ components/          # React components
β”œβ”€β”€ utils/               # Utility functions (db, parser, platform)
β”œβ”€β”€ services/            # API services (Google Books)
β”œβ”€β”€ src/locales/         # i18n translation files
β”œβ”€β”€ electron/            # Electron main process
β”œβ”€β”€ App.tsx              # Main application
└── types.ts             # TypeScript type definitions

Development

Prerequisites

  • Node.js 18+
  • npm or yarn

Code Style

  • TypeScript with strict mode
  • Functional React components with hooks
  • Tailwind CSS for styling
  • Path alias: @/* maps to project root

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

Adding Translations

We welcome translations to other languages! Translation files are located in src/locales/. To add a new language:

  1. Copy src/locales/en.json to src/locales/[language-code].json
  2. Translate all strings in the new file
  3. Update src/i18n.ts to include the new language
  4. Submit a Pull Request

License

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

Acknowledgments