Your personal audiobook statistics dashboard
2.3K
A self-hosted audiobook dashboard for Audiobookshelf. Browse your library, track listening statistics, follow upcoming releases from your favorite authors, and get AI-powered book recommendations — all from a single interface.
Designed for single-user, self-hosted deployments. No cloud services required.
1-9 switch tabs, / focuses search, Esc closes dialogsdocker run -d \
--name readingview \
-p 8506:8506 \
-v readingview-data:/app/data \
-e ABS_URL=https://your-audiobookshelf-url \
-e ABS_TOKEN=your_api_token \
--restart unless-stopped \
readingview:latest
git clone https://github.com/reloadfast/readingview.git
cd readingview
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp env.example .env # edit with your credentials
streamlit run app.py
Access at: http://localhost:8506
All configuration is via environment variables (or a .env file). See env.example for a complete template.
| Variable | Description |
|---|---|
ABS_URL | Audiobookshelf server URL |
ABS_TOKEN | API token (how to get one) |
| Variable | Default | Description |
|---|---|---|
APP_TITLE | ReadingView | Dashboard title |
CACHE_TTL | 300 | Data cache duration in seconds |
ITEMS_PER_ROW | 5 | Grid columns for book/author cards |
THEME | dark | Color theme (dark or light) |
ENABLE_RELEASE_TRACKER | true | Show release tracker and authors tabs |
DB_PATH | /app/data/release_tracker.db | SQLite database path |
| Variable | Default | Description |
|---|---|---|
ENABLE_NOTIFICATIONS | false | Enable notification features |
APPRISE_API_URL | — | Apprise API server URL |
APPRISE_NOTIFICATION_KEY | — | Routing key configured in Apprise |
See NOTIFICATIONS.md for setup instructions.
| Variable | Default | Description |
|---|---|---|
BOOK_RECOMMENDER_ENABLED | false | Enable the recommender module |
BOOK_RECOMMENDER_OLLAMA_URL | http://localhost:11434 | Ollama API endpoint |
BOOK_RECOMMENDER_EMBED_MODEL | nomic-embed-text | Embedding model |
BOOK_RECOMMENDER_LLM_MODEL | llama3 | LLM for explanations |
BOOK_RECOMMENDER_VECTOR_BACKEND | python | faiss or python |
BOOK_RECOMMENDER_DB_PATH | /app/data/book_recommender.db | Recommender database path |
BOOK_RECOMMENDER_ENABLE_EXPLANATIONS | false | Generate LLM explanations |
BOOK_RECOMMENDER_TOP_K | 10 | Number of recommendations to return |
BOOK_RECOMMENDER_MIN_SIMILARITY | 0.2 | Minimum similarity threshold |
Requires Ollama running locally with the configured models pulled.
readingview/
├── app.py # Streamlit entry point
├── config/config.py # Environment variable loading
├── api/
│ ├── audiobookshelf.py # ABS API client
│ └── openlibrary.py # Open Library API client
├── components/ # UI tab components
│ ├── library.py # Library + In Progress views
│ ├── statistics.py # Stats + Year in Recap
│ ├── authors.py # Author browser
│ ├── series_tracker.py # Series progress
│ ├── release_tracker.py # Release tracking
│ ├── recommendations.py # Recommender UI
│ └── notifications.py # Notification settings
├── book_recommender/ # Pluggable AI recommendation module
│ ├── __init__.py # Public API
│ ├── service.py # Orchestration
│ ├── _db.py, _ollama.py # Storage + AI clients
│ ├── _vector.py # FAISS / cosine backends
│ └── _ingestion.py # Open Library metadata fetcher
├── database/db.py # Release tracker SQLite schema
├── utils/
│ ├── helpers.py # Formatting, grouping, skeletons
│ ├── notifications.py # Apprise client
│ └── scheduler.py # APScheduler background jobs
├── Dockerfile # Multi-stage Docker build
└── docker-compose.yml # Full-stack compose config
Data is stored in two SQLite databases (under /app/data/ in Docker):
MIT License
Content type
Image
Digest
sha256:55216fb0e…
Size
67.9 MB
Last updated
5 months ago
docker pull talesofthemoon/readingview