📚 MyBibliotheca
MyBibliotheca is a self-hosted personal library and reading tracker web app built with Flask. It lets you log, organize, and visualize your reading journey. Add books by ISBN, track reading progress, log daily reading, and generate monthly wrap-up images of your finished titles.
🆕 Multi-User Features
Multi-user authentication, user data isolation, admin management, and secure password handling.
✨ Features
- 📖 Add Books
Add books quickly by ISBN with automatic cover and metadata fetching. Now featuring bulk-import from Goodreads and other CSV files! - ✅ Track Progress
Mark books as Currently Reading, Want to Read, Finished, or Library Only. - 📅 Reading Logs
Log daily reading activity and maintain streaks. - 🖼️ Monthly Wrap-Ups
Generate shareable image collages of books completed each month. - 🔎 Search
Find and import books using the Google Books API. - 📱 Responsive UI
Clean, mobile-friendly interface built with Bootstrap. - 🔐 Multi-User Support
Secure authentication with user data isolation. - 👤 Admin Management
Administrative tools and user management.
🚀 Getting Started
📦 Run with Docker
MyBibliotheca can be run completely in Docker — no need to install Python or dependencies on your machine.
✅ Prerequisites
- Docker installed
- Docker Compose installed
🔁 Option 1: One-liner (Docker only)
docker run -d \
--name mybibliotheca \
-p 5054:5054 \
-v /path/to/data:/app/data \
-e TIMEZONE=America/Chicago \
-e WORKERS=6 \
--restart unless-stopped \
pickles4evaaaa/MyBibliotheca:latest
Warning
You may need to restart the container after an initial run to ensure that existing books are transferred over. See https://github.com/pickles4evaaaa/mybibliotheca/issues/44
🔁 Option 2: Docker Compose
Create a docker-compose.yml
file:
version: '3.8'
services:
MyBibliotheca:
image: pickles4evaaaa/mybibliotheca:latest
container_name: mybibliotheca
ports:
- "5054:5054"
volumes:
- /path/to/data:/app/data # ← bind-mount host
restart: unless-stopped
environment:
- TIMEZONE=America/Chicago # ✅ Set your preferred timezone here
- WORKERS=6 # Change to the number of Gunicorn workers you want
Then run:
docker compose up -d
Warning
You may need to restart the container after an initial run to ensure that existing books are transferred over. See https://github.com/pickles4evaaaa/mybibliotheca/issues/44
🔧 Configurable Environment Variables
Variable | Description | Default / Example |
---|---|---|
SECRET_KEY | Flask secret key for sessions | auto-generated |
SECURITY_PASSWORD_SALT | Password hashing salt | auto-generated |
TIMEZONE | Sets the app's timezone | America/Chicago |
WORKERS | Number of Gunicorn worker processes | 6 |