[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-94558":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":15,"starSnapshotCount":15,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},94558,"booklore","booklore-app\u002Fbooklore","booklore-app","BookLore: A self-hosted, multi-user digital library with smart shelves, auto metadata, Kobo & KOReader sync, BookDrop imports, OPDS support, and a built-in reader for EPUB, PDF, and comics.",null,"https:\u002F\u002Fgithub.com\u002Fbooklore-app\u002Fbooklore","Java",818,65,3,0,6,47.06,false,"main","2026-08-24 04:01:22","\u003Cp align=\"center\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"assets\u002Flogo-with-text-dark.svg\">\n    \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"assets\u002Flogo-with-text-light.svg\">\n    \u003Cimg src=\"assets\u002Flogo-with-text-light.svg\" alt=\"BookLore\" height=\"80\" \u002F>\n  \u003C\u002Fpicture>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Cstrong>Your books deserve a home. This is it.\u003C\u002Fstrong>\u003C\u002Fp>\n\n\u003Cp align=\"center\">\nBookLore is a self-hosted app that brings your entire book collection under one roof.\u003Cbr\u002F>\nOrganize, read, annotate, sync across devices, and share, all without relying on third-party services.\n\u003C\u002Fp>\n\n---\n\n## ✨ Features\n\n| | Feature | Description |\n|:---:|:---|:---|\n| 📚 | **Smart Shelves** | Custom and dynamic shelves that organize themselves with rule-based Magic Shelves, filters, and full-text search |\n| 🔍 | **Automatic Metadata** | Covers, descriptions, reviews, and ratings pulled from Google Books, Open Library, and Amazon, all editable |\n| 📖 | **Built-in Reader** | Open PDFs, EPUBs, and comics right in the browser with annotations, highlights, and reading progress |\n| 🔄 | **Device Sync** | Connect your Kobo, use any OPDS-compatible app, or sync progress with KOReader. Your library follows you everywhere |\n| 👥 | **Multi-User Ready** | Individual shelves, progress, and preferences per user with local or OIDC authentication |\n| 📥 | **BookDrop** | Drop files into a watched folder and BookLore detects, enriches, and queues them for import automatically |\n| 📧 | **One-Click Sharing** | Send any book to a Kindle, an email address, or a friend instantly |\n\n---\n\n## 🚀 Quick Start\n\nAll you need is [Docker](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) and [Docker Compose](https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Finstall\u002F).\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>📦 Image Repositories\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n| Registry | Image                              |\n|----------|------------------------------------|\n| GitHub Container Registry | `ghcr.io\u002Fbooklore-app\u002Fbooklore` |\n\n\u003C\u002Fdetails>\n\n### Step 1: Environment Configuration\n\nCreate a `.env` file:\n\n```ini\n# Application\nAPP_USER_ID=1000\nAPP_GROUP_ID=1000\nTZ=Etc\u002FUTC\n\n# Database\nDATABASE_URL=jdbc:mariadb:\u002F\u002Fmariadb:3306\u002Fbooklore\nDB_USER=booklore\nDB_PASSWORD=ChangeMe_BookLoreApp_2025!\n\n# Storage: LOCAL (default) or NETWORK (disables file operations, see Network Storage section below)\nDISK_TYPE=LOCAL\n\n# MariaDB\nDB_USER_ID=1000\nDB_GROUP_ID=1000\nMYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025!\nMYSQL_DATABASE=booklore\n```\n\n### Step 2: Docker Compose\n\nCreate a `docker-compose.yml`:\n\n```yaml\nservices:\n  booklore:\n    image: ghcr.io\u002Fbooklore-app\u002Fbooklore:latest\n    container_name: booklore\n    environment:\n      - USER_ID=${APP_USER_ID}\n      - GROUP_ID=${APP_GROUP_ID}\n      - TZ=${TZ}\n      - DATABASE_URL=${DATABASE_URL}\n      - DATABASE_USERNAME=${DB_USER}\n      - DATABASE_PASSWORD=${DB_PASSWORD}\n      - DISK_TYPE=${DISK_TYPE}\n    depends_on:\n      mariadb:\n        condition: service_healthy\n    ports:\n      - \"6060:6060\"\n    volumes:\n      - .\u002Fdata:\u002Fapp\u002Fdata\n      - .\u002Fbooks:\u002Fbooks\n      - .\u002Fbookdrop:\u002Fbookdrop\n    healthcheck:\n      test: wget -q -O - http:\u002F\u002Flocalhost:6060\u002Fapi\u002Fv1\u002Fhealthcheck\n      interval: 60s\n      retries: 5\n      start_period: 60s\n      timeout: 10s\n    restart: unless-stopped\n\n  mariadb:\n    image: lscr.io\u002Flinuxserver\u002Fmariadb:11.4.5\n    container_name: mariadb\n    environment:\n      - PUID=${DB_USER_ID}\n      - PGID=${DB_GROUP_ID}\n      - TZ=${TZ}\n      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}\n      - MYSQL_DATABASE=${MYSQL_DATABASE}\n      - MYSQL_USER=${DB_USER}\n      - MYSQL_PASSWORD=${DB_PASSWORD}\n    volumes:\n      - .\u002Fmariadb\u002Fconfig:\u002Fconfig\n    restart: unless-stopped\n    healthcheck:\n      test: [ \"CMD\", \"mariadb-admin\", \"ping\", \"-h\", \"localhost\" ]\n      interval: 5s\n      timeout: 5s\n      retries: 10\n```\n\n### Step 3: Launch\n\n```bash\ndocker compose up -d\n```\n\nOpen **http:\u002F\u002Flocalhost:6060**, create your admin account, and start building your library.\n\n---\n\n## ⚠️ Network Storage (NAS \u002F NFS \u002F SMB \u002F CIFS)\n\n> [!CAUTION]\n> BookLore's file operations (metadata writing, file renaming, file organization) are built for **local file systems only**. Network-attached storage (NAS, NFS, SMB\u002FCIFS mounts, cloud-backed FUSE, etc.) is **unsupported and untested**. Mount options, network latency, caching, and filesystem semantics are all outside BookLore's control and can cause silent file corruption, incomplete writes, missing files, and other unpredictable behavior. **Issues related to network storage will be closed without investigation.**\n\nIf your book files live on network storage, set `DISK_TYPE=NETWORK` in your `.env` file. This puts BookLore into **network storage mode**, which disables all file write and reorganization features. Metadata is stored in the database only and your files are never modified. This is the only supported configuration for network storage.\n\n---\n\n## 📥 BookDrop: Zero-Effort Import\n\nDrop book files into a folder. BookLore picks them up, pulls metadata, and queues everything for your review.\n\n```mermaid\ngraph LR\n    A[📁 Drop Files] --> B[🔍 Auto-Detect]\n    B --> C[📊 Extract Metadata]\n    C --> D[✅ Review & Import]\n```\n\n| Step | What Happens |\n|:---|:---|\n| 1. **Watch** | BookLore monitors the BookDrop folder around the clock |\n| 2. **Detect** | New files are picked up and parsed automatically |\n| 3. **Enrich** | Metadata is fetched from Google Books and Open Library |\n| 4. **Import** | You review, tweak if needed, and add to your library |\n\nMount the volume in `docker-compose.yml`:\n\n```yaml\nvolumes:\n  - .\u002Fbookdrop:\u002Fbookdrop\n```\n\n---\n\n## 💜 Support BookLore\n\nBookLore is free, open source, and built with care. Here's how you can give back:\n\n| Action | How |\n|:---|:---|\n| ⭐ **Star this repo** | It's the simplest way to help others find BookLore |\n| 💰 **Sponsor development** | [Open Collective](https:\u002F\u002Fopencollective.com\u002Fbooklore) funds hosting, testing, and new features |\n| 📢 **Tell someone** | Share BookLore with a friend, a subreddit, or your local book club |\n\n---\n\n## 🌍 Translations\n\nBookLore is used by readers around the world. Help make it accessible in your language on [Weblate](https:\u002F\u002Fhosted.weblate.org\u002Fengage\u002Fbooklore\u002F).\n\n\u003Ca href=\"https:\u002F\u002Fhosted.weblate.org\u002Fengage\u002Fbooklore\u002F\">\n  \u003Cimg src=\"https:\u002F\u002Fhosted.weblate.org\u002Fwidget\u002Fbooklore\u002Fmulti-auto.svg?v=1\" alt=\"Translation status\" \u002F>\n\u003C\u002Fa>\n\n---\n\n## 🌟 Sponsors & Partners\n\n\u003Ctable>\n\u003Ctr>\n\n\u003Ca href=\"https:\u002F\u002Fjb.gg\u002FOpenSource\">\n  \u003Cimg src=\"https:\u002F\u002Fresources.jetbrains.com\u002Fstorage\u002Fproducts\u002Fcompany\u002Fbrand\u002Flogos\u002Fjetbrains.svg\" alt=\"JetBrains\" height=\"40\" \u002F>\n\u003C\u002Fa>\n\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\n---\n\n\u003Cdiv align=\"center\">\n\n## ⚖️ License\n\n**GNU Affero General Public License v3.0**\n\nCopyright 2024–2026 BookLore\n\n[![License: AGPL v3](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-AGPL_v3-blue.svg?style=for-the-badge)](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fagpl-3.0.html)\n\n\u003C\u002Fdiv>\n","BookLore 是一款自托管的多用户数字图书馆应用，用于统一管理、组织和阅读本地电子书收藏。核心功能包括智能书架（支持规则过滤与全文检索）、自动从 Google Books 等源获取元数据、内置浏览器阅读器（支持 EPUB\u002FPDF\u002F漫画格式及标注）、Kobo 与 KOReader 设备同步、OPDS 协议兼容、BookDrop 文件夹自动导入，以及基于 OIDC 或本地认证的多用户隔离。适用于个人知识管理、家庭共享书库、隐私敏感型电子书爱好者及需要离线可控阅读环境的技术用户。",2,"2026-08-12 02:30:05","trending"]