# Bookhoard logo Bookhoard A modern self-hosted media library system built with Go, PostgreSQL, HTMX, and Tailwind CSS featuring **universal cross-device sync**, beautiful dark themes, and comprehensive media management. ## โœจ Why Bookhoard? **๐Ÿ”„ Universal Sync**: Your reading position, bookmarks, highlights, and notes sync automatically between KOReader and the web - with native Kobo sync and mobile apps coming later. **๐Ÿ“ฑ Multi-Library**: Organize your ebooks, comics, and manga with per-library folders and smart collections. **๐ŸŽจ Beautiful UI**: 11 gorgeous dark themes with responsive design that works on any device. **๐Ÿ”’ Secure**: JWT authentication, bcrypt password hashing, rate limiting, and no passwords on devices. --- ## ๐Ÿš€ Quick Start ### Prerequisites - **Podman** (recommended) or Docker - **5 minutes** of your time ### Installation ```bash # 1. Clone the repository git clone https://git.linuxhg.com/Bookhoard/bookhoard.git cd bookhoard # 2. Set up environment cp .env.example .env # Generate secure passwords (no special characters): # JWT_SECRET: openssl rand -hex 32 # DBPASS: openssl rand -hex 16 # Edit .env with your generated values # 3. Pull images and start the server docker compose pull docker compose up -d # Optionally pin a specific version: set IMAGE_TAG in .env (defaults to "latest") # 4. Open your browser open http://localhost:8765 ``` The first user to register automatically becomes an admin. --- ## ๐Ÿ“– Key Features ### Universal Cross-Platform Sync - **Real-Time Progress**: Turn a page on your e-reader, see it in your browser - **Format-Aware**: EPUB CFI, page numbers, percentages - all handled correctly - **Offline Queue**: Changes sync when you reconnect, priority-processed - **Conflict Resolution**: Smart handling when same book read on multiple devices - **Book Matching**: Automatic matching using SHA-256, ISBN, UUID - **OPDS Catalog**: Wireless book delivery to e-readers over Wi-Fi - **Format Conversion**: On-the-fly EPUBโ†’KEPUB conversion (for upcoming native Kobo support) ### Media Management - **Calibre Integration**: Automatic metadata import from Calibre `metadata.opf` sidecar files - **Smart Search**: Partial matching with fuzzy search fallback for typos - **Advanced Filtering**: Filter by author, series, genre, language, year, cover images - **Dynamic Sorting**: By title, author, date added, published date, page count, series - **Rich Metadata**: Title, author, series, publisher, ISBN, language, edition, tags - **5-Star Ratings**: Half-star precision (1-10 scale) - **Notes & Highlights**: Color-coded annotations with linked notes - **Usage Analytics**: Reading statistics, device usage, popular books ### Smart Collections - **Auto-Assign Rules**: Automatically add books based on genre, author, series, tags, language, publisher, year - **Device Shelf Mappings**: Map collections to device shelves (used by native Kobo sync, coming soon) - **Test Before Creating**: Preview which books match your rules ### Library Organization - **Multi-Library Support**: Ebooks, Comics, and Manga with type-specific file formats - **Multiple Folders**: Add multiple scanning folders per library - **Visibility Control**: Admins control which libraries each user can see - **Background Scanning**: Auto-scan with per-user frequency settings - **Watch Mode**: Real-time file system monitoring for instant updates ### Security - **JWT Authentication**: Short-lived access tokens (1 hour) with refresh tokens (7 days) - **Strong Passwords**: Complexity requirements enforced (8+ chars, uppercase, lowercase, number, special) - **Account Lockout**: 5 failed attempts = 15-minute lockout - **Rate Limiting**: 10 requests/minute on auth endpoints - **Input Validation**: Comprehensive validation on all inputs - **No Passwords on Devices**: Web-based device approval with QR codes --- ## ๐Ÿ“š Documentation ### For Users & Self-Hosters - **[docs/user/calibre-integration.md](docs/user/calibre-integration.md)** - Calibre library integration - **[docs/user/sync-guide.md](docs/user/sync-guide.md)** - Understanding and using universal sync - **[docs/user/devices/koreader-setup.md](docs/user/devices/koreader-setup.md)** - KOReader configuration - **[docs/user/devices/kobo-setup.md](docs/user/devices/kobo-setup.md)** - Kobo e-reader configuration (coming soon) - **[docs/user/user-guide.md](docs/user/user-guide.md)** - General user guide - **[docs/user/admin-guide.md](docs/user/admin-guide.md)** - Admin features and configuration - **[docs/user/settings-guide.md](docs/user/settings-guide.md)** - Settings and preferences ### For Developers - **[docs/developer/api/api-reference.md](docs/developer/api/api-reference.md)** - Complete API documentation - **[docs/developer/android-app.md](docs/developer/android-app.md)** - Android app design & roadmap - **[docs/contributing/development.md](docs/contributing/development.md)** - Development workflow --- ## ๐ŸŽฏ Supported Devices | Platform | Sync | OPDS | Status | | ---------------- | ---- | ---- | ------------------------------------------------------------- | | **Web Browser** | โœ… | โœ… | Full support | | **KOReader** | โœ… | โœ… | Runs on Kindle, Kobo, PocketBook hardware | | **Kobo Devices** | ๐Ÿšง | ๐Ÿšง | Native Kobo sync coming soon (use KOReader on Kobo today) | | **Mobile Apps** | ๐Ÿšง | ๐Ÿšง | Native Android app in design ([docs](docs/developer/android-app.md)); iOS later | --- ## ๐Ÿ›  Tech Stack - **Backend**: Go 1.25+ with Echo framework - **Database**: PostgreSQL 15+ with pgx v5 - **Frontend**: HTMX + Tailwind CSS + Templ - **Auth**: JWT tokens with bcrypt password hashing - **Container**: Podman (Docker compatible) --- ## ๐Ÿงช Testing ```bash # Run all tests make test-all # Run integration tests (with test mode) make test-integration # Run Bruno OpenCollection YAML API tests npm install -g @usebruno/cli bruno run ``` --- ## ๐Ÿ“Š Project Status **Version**: 1.0 **License**: AGPL-3.0 **Status**: Production-ready โœ… --- ## ๐Ÿค Contributing We welcome contributions! Please see [docs/developer/development.md](docs/developer/development.md) for guidelines. --- ## ๐Ÿ“„ License AGPL-3.0 - See [LICENSE](LICENSE) file for details. --- **Built with โค๏ธ using Go, PostgreSQL, HTMX, and Tailwind CSS**