mirror of
https://github.com/kikootwo/ReadMeABook.git
synced 2026-06-02 20:30:10 +00:00
411b5f88a4
Introduce a per-indexer ratioLimit alongside seedingTimeMinutes to control torrent cleanup. Updates include: documentation (scheduler and settings pages), types and API (saved indexer config now includes ratioLimit), setup and management UI (new TorrentSeedingFields component, modal wiring, validation and handlers), and processor logic (cleanup-seeded-torrents now requires AND-semantics between time and ratio; 0 disables a criterion, both 0 = never cleaned, undefined client ratio with ratioLimit>0 = not met). Tests were added/updated to cover ratio-only, time+ratio, missing-ratio, and UI interactions. Default behavior: ratioLimit defaults to 0 (no ratio requirement).
ReadMeABook - Audiobook Library Management
Status: MVP Complete (Phases 1-4 ✅) | Docker deployment pending
Stack
- Frontend: Next.js 14+, TypeScript, Tailwind CSS
- Backend: Node.js/Express via Next.js API routes
- Database: PostgreSQL (Docker embedded)
- Queue: Bull + Redis (Docker embedded)
- Deployment: Single Docker image
Architecture
Docker Container
├── Next.js App (Frontend + Backend)
├── PostgreSQL (users, audiobooks, requests, config, jobs)
├── Bull Queue + Redis (background jobs)
└── Volumes: /config, /downloads, /media
External integrations: Plex (auth + library), Prowlarr/Jackett (indexers), qBittorrent/Transmission (downloads), Audible (metadata scraping)
Core Features (Implemented)
- Plex OAuth authentication
- Setup wizard (8 steps: admin, Plex, Prowlarr, download client, paths)
- Audiobook discovery (popular, new releases via Audible scraping)
- Request management with status tracking
- Automation pipeline: search → download → organize → Plex scan
- Admin dashboard with metrics, active downloads, recent requests
- Settings pages (Plex, Prowlarr, download client, paths)
- Scheduled jobs (Plex scan, Audible refresh, retry logic, cleanup)
- User/admin RBAC
User Flow
- Login with Plex → 2. Search/browse audiobooks → 3. Request → 4. Auto: search indexers → download torrent → organize files → scan Plex → 5. Available in Plex library
Documentation Map
Backend:
- database.md - PostgreSQL schema, Prisma ORM
- services/auth.md - Plex OAuth, JWT sessions
- services/config.md - Settings storage, encryption
- services/jobs.md - Bull queue, background processors
- services/scheduler.md - Recurring jobs (cron)
Integrations:
- integrations/plex.md - Library scanning, OAuth, matching
- integrations/audible.md - Web scraping, metadata
Automation (Phase 3):
- phase3/README.md - Automation pipeline overview
- phase3/qbittorrent.md - Download client integration
- phase3/prowlarr.md - Indexer search
- phase3/ranking-algorithm.md - Torrent selection
- phase3/file-organization.md - File management, seeding
Frontend:
- frontend/components.md - React components catalog
- frontend/routing-auth.md - Route protection, auth flow
- frontend/pages/login.md - Login page design
Admin:
- admin-dashboard.md - Metrics, monitoring
- settings-pages.md - Configuration UI
- setup-wizard.md - First-time setup flow
Deployment:
- deployment/docker.md - Docker Compose, volumes, env vars
Testing:
- testing.md - Backend unit tests, scripts
Development Phases
✅ Phase 1: Foundation (auth, database, setup wizard) ✅ Phase 2: User features (discovery, requests, dashboard) ✅ Phase 3: Automation (search, download, organize, Plex integration) ✅ Phase 4: Admin tools (dashboard, settings, monitoring, scheduled jobs) ⏳ Phase 5: Enhanced features (WebSockets, advanced search) ⏳ Phase 6: Advanced admin (analytics, notifications, quality profiles)
Standards
- Files ≤400 lines
- File headers link to documentation
- Update docs before/after code changes
- Type-safe TypeScript throughout
- Encrypted sensitive config (AES-256)