dependabot[bot] 175c58180a chore(deps): bump the npm-dependencies group (#2542)
Bumps the npm-dependencies group in /booklore-ui with 20 updates:

| Package | From | To |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations) | `21.1.1` | `21.1.2` |
| [@angular/cdk](https://github.com/angular/components) | `21.1.1` | `21.1.2` |
| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common) | `21.1.1` | `21.1.2` |
| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler) | `21.1.1` | `21.1.2` |
| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core) | `21.1.1` | `21.1.2` |
| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms) | `21.1.1` | `21.1.2` |
| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser) | `21.1.1` | `21.1.2` |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) | `21.1.1` | `21.1.2` |
| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router) | `21.1.1` | `21.1.2` |
| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker) | `21.1.1` | `21.1.2` |
| [primeng](https://github.com/primefaces/primeng/tree/HEAD/packages/primeng) | `21.0.4` | `21.1.1` |
| [@analogjs/vite-plugin-angular](https://github.com/analogjs/analog) | `2.2.2` | `2.2.3` |
| [@analogjs/vitest-angular](https://github.com/analogjs/analog) | `2.2.2` | `2.2.3` |
| [@angular/build](https://github.com/angular/angular-cli) | `21.1.1` | `21.1.2` |
| [@angular/cli](https://github.com/angular/angular-cli) | `21.1.1` | `21.1.2` |
| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli) | `21.1.1` | `21.1.2` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `25.0.10` | `25.1.0` |
| [@types/uuid](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/uuid) | `10.0.0` | `11.0.0` |
| [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) | `21.1.0` | `21.2.0` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.53.1` | `8.54.0` |


Updates `@angular/animations` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/animations)

Updates `@angular/cdk` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/components/releases)
- [Changelog](https://github.com/angular/components/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/components/compare/v21.1.1...v21.1.2)

Updates `@angular/common` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/common)

Updates `@angular/compiler` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/compiler)

Updates `@angular/core` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/core)

Updates `@angular/forms` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/forms)

Updates `@angular/platform-browser` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/platform-browser)

Updates `@angular/platform-browser-dynamic` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/platform-browser-dynamic)

Updates `@angular/router` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/router)

Updates `@angular/service-worker` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/service-worker)

Updates `primeng` from 21.0.4 to 21.1.1
- [Release notes](https://github.com/primefaces/primeng/releases)
- [Changelog](https://github.com/primefaces/primeng/blob/master/CHANGELOG.md)
- [Commits](https://github.com/primefaces/primeng/commits/21.1.1/packages/primeng)

Updates `@analogjs/vite-plugin-angular` from 2.2.2 to 2.2.3
- [Release notes](https://github.com/analogjs/analog/releases)
- [Changelog](https://github.com/analogjs/analog/blob/beta/CHANGELOG.md)
- [Commits](https://github.com/analogjs/analog/compare/v2.2.2...v2.2.3)

Updates `@analogjs/vitest-angular` from 2.2.2 to 2.2.3
- [Release notes](https://github.com/analogjs/analog/releases)
- [Changelog](https://github.com/analogjs/analog/blob/beta/CHANGELOG.md)
- [Commits](https://github.com/analogjs/analog/compare/v2.2.2...v2.2.3)

Updates `@angular/build` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/v21.1.1...v21.1.2)

Updates `@angular/cli` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/v21.1.1...v21.1.2)

Updates `@angular/compiler-cli` from 21.1.1 to 21.1.2
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v21.1.2/packages/compiler-cli)

Updates `@types/node` from 25.0.10 to 25.1.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `@types/uuid` from 10.0.0 to 11.0.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/uuid)

Updates `angular-eslint` from 21.1.0 to 21.2.0
- [Release notes](https://github.com/angular-eslint/angular-eslint/releases)
- [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/CHANGELOG.md)
- [Commits](https://github.com/angular-eslint/angular-eslint/commits/v21.2.0/packages/angular-eslint)

Updates `typescript-eslint` from 8.53.1 to 8.54.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.54.0/packages/typescript-eslint)

---
updated-dependencies:
- dependency-name: "@angular/animations"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/cdk"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/common"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/compiler"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/core"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/forms"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/platform-browser"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/router"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/service-worker"
  dependency-version: 21.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: primeng
  dependency-version: 21.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-dependencies
- dependency-name: "@analogjs/vite-plugin-angular"
  dependency-version: 2.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@analogjs/vitest-angular"
  dependency-version: 2.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/build"
  dependency-version: 21.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/cli"
  dependency-version: 21.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@angular/compiler-cli"
  dependency-version: 21.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-dependencies
- dependency-name: "@types/node"
  dependency-version: 25.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-dependencies
- dependency-name: "@types/uuid"
  dependency-version: 11.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm-dependencies
- dependency-name: angular-eslint
  dependency-version: 21.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-dependencies
- dependency-name: typescript-eslint
  dependency-version: 8.54.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-05 13:57:22 -07:00
2025-07-19 11:06:35 -06:00
2026-01-19 08:44:53 -07:00
2026-01-19 08:44:53 -07:00
2025-08-05 15:23:21 -06:00

📚 BookLore

Your Personal Library, Beautifully Organized

🌐 Official Website: https://booklore.org

BookLore Demo

Release License Stars Docker Pulls

Discord Open Collective


BookLore is a powerful, self-hosted web application designed to organize and manage your personal book collection with elegance and ease. Build your dream library with an intuitive interface, robust metadata management, and seamless multi-user support.

🚀 Get Started📖 Documentation🎮 Try Demo💬 Community


Features That Make BookLore Shine

📖 Library Management

  • Smart Organization: Custom shelves with powerful filters
  • Magic Shelves: Dynamic, auto-updating collections
  • Auto Metadata: Rich details from multiple sources
  • Advanced Search: Find any book instantly

🌐 Connectivity

  • Kobo Integration: Seamless device sync
  • OPDS Support: Connect any reading app
  • KOReader Sync: Cross-platform progress tracking
  • Email Sharing: One-click book sending

👥 User Experience

  • Multi-User Support: Granular permissions
  • Flexible Auth: Local or OIDC providers
  • Mobile Ready: Responsive on all devices
  • Built-in Reader: PDFs, EPUBs, comics

🚀 Smart Features

  • BookDrop Import: Auto-detect bulk files
  • Private Notes: Personal reading annotations
  • Community Reviews: Enriched book data
  • Progress Tracking: Reading statistics

💖 Support the Project

Your support helps BookLore grow and improve! 🌱

Star Us

Give us a star to show your support and help others discover BookLore!

Star this repo

💰 Sponsor

Support development, hosting, and testing costs

Open Collective

📢 Spread the Word

Share BookLore with fellow book lovers and developers!

🎯 Current Goal: Raising funds for a Kobo device to implement native Kobo sync support
💡 Support the Kobo Sync Bounty →


🎮 Live Demo: Explore BookLore in Action

Experience BookLore's features in a live environment before deploying your own instance!

🌐 Demo URL 👤 Username 🔑 Password
demo.booklore.org booklore 9HC20PGGfitvWaZ1

⚠️ Note: Demo account has standard user permissions only.
Admin features (user management, library setup) require a self-hosted instance.


🚀 Getting Started with BookLore

Choose Your Path

📘 Documentation

Guides for installation, setup, features, and more

Read the Docs

Contribute to the docs at: booklore-docs

🐳 Quick Deploy

Get up and running in minutes with Docker

Deploy with Docker

Easiest way to self-host BookLore


🐳 Deploy with Docker

Prerequisites

Ensure you have Docker and Docker Compose installed.

📦 Image Repositories
  • 🐳 Docker Hub: booklore/booklore
  • 📦 GitHub Container Registry: ghcr.io/booklore-app/booklore

💡 Legacy images at ghcr.io/adityachandelgit/booklore-app remain available but won't receive updates.

Step 1: Create Environment Configuration

Create a .env file in your project directory:

# 🎯 BookLore Application Settings
APP_USER_ID=0
APP_GROUP_ID=0
TZ=Etc/UTC
BOOKLORE_PORT=6060

# 🗄️ Database Connection (BookLore)
DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore
DB_USER=booklore
DB_PASSWORD=ChangeMe_BookLoreApp_2025!

# 💾 Storage type: LOCAL (default) or NETWORK. Set to NETWORK if using NFS/SMB - this disables file reorganization features to prevent data corruption.
DISK_TYPE=LOCAL

# 🔧 MariaDB Container Settings
DB_USER_ID=1000
DB_GROUP_ID=1000
MYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025!
MYSQL_DATABASE=booklore

Step 2: Create Docker Compose File

Create a docker-compose.yml file:

services:
  booklore:
    image: booklore/booklore:latest
    # Alternative: Use GitHub Container Registry
    # image: ghcr.io/booklore-app/booklore:latest
    container_name: booklore
    environment:
      - USER_ID=${APP_USER_ID}
      - GROUP_ID=${APP_GROUP_ID}
      - TZ=${TZ}
      - DATABASE_URL=${DATABASE_URL}
      - DATABASE_USERNAME=${DB_USER}
      - DATABASE_PASSWORD=${DB_PASSWORD}
      - BOOKLORE_PORT=${BOOKLORE_PORT}
    depends_on:
      mariadb:
        condition: service_healthy
    ports:
      - "${BOOKLORE_PORT}:${BOOKLORE_PORT}"
    volumes:
      - ./data:/app/data
      - ./books:/books
      - ./bookdrop:/bookdrop
    healthcheck:
      test: wget -q -O - http://localhost:${BOOKLORE_PORT}/api/v1/healthcheck
      interval: 60s
      retries: 5
      start_period: 60s
      timeout: 10s
    restart: unless-stopped

  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.5
    container_name: mariadb
    environment:
      - PUID=${DB_USER_ID}
      - PGID=${DB_GROUP_ID}
      - TZ=${TZ}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASSWORD}
    volumes:
      - ./mariadb/config:/config
    restart: unless-stopped
    healthcheck:
      test: [ "CMD", "mariadb-admin", "ping", "-h", "localhost" ]
      interval: 5s
      timeout: 5s
      retries: 10

Step 3: Launch BookLore

docker compose up -d

Step 4: Access Your Library

Open your browser and navigate to:

🌐 http://localhost:6060

🎉 Welcome to your personal library!


📥 BookDrop: Automatic Import

Drop Files, Import Automatically

BookLore's BookDrop feature automatically detects and processes book files dropped into a designated folder.

How It Works

graph LR
    A[📁 Drop Files] --> B[🔍 Auto-Detect]
    B --> C[📊 Extract Metadata]
    C --> D[✅ Review & Import]
  1. File Watcher: Monitors the BookDrop folder continuously
  2. Auto-Detection: Processes new files and extracts metadata
  3. Metadata Enrichment: Fetches details from Google Books, Open Library
  4. Review & Finalize: Review, edit, and import to your library

Docker Configuration

Add the BookDrop volume to your docker-compose.yml:

services:
  booklore:
    volumes:
      - ./data:/app/data
      - ./books:/books
      - ./bookdrop:/bookdrop  # 👈 BookDrop magic happens here

🤝 Community & Support

🐞 Bug Reports

Found an issue?

Open Issue

💡 Feature Req

Have an idea?

Request Feature

🤝 Contribute

Join development!

Contributing

💬 Chat

Join community!

Discord


📊 Project Analytics

Repository Activity

Repository Activity

Star History

Star History Chart

👨‍💻 Contributors

Thanks to all our amazing contributors! 🙏

Contributors

Want to see your face here? Start contributing today!


🌟 Sponsors

Thank you to our amazing sponsors!

Run on PikaPods      ElfHosted

Powered by

JetBrains logo

Become a sponsor and get your logo here! Support us on Open Collective


⚖️ License

GNU Affero General Public License v3.0 (AGPL-3.0)

Copyright © 2024-2026 BookLore

License: AGPL v3

Made with ❤️ by the BookLore community

⬆ Back to Top

Description
No description provided
Readme AGPL-3.0 74 MiB
Languages
Java 54.8%
TypeScript 24.3%
HTML 10.2%
SCSS 7.8%
JavaScript 2.7%