Files
ReadMeABook/documentation/README.md
T
kikootwo 94dbaf073b Add backend unit test framework and modularize settings UI
Introduced a Vitest-based backend unit testing framework with supporting scripts, helpers, and GitHub Actions integration. Refactored the admin settings page to a modular architecture, splitting monolithic logic into feature-specific tabs and hooks for improved maintainability and testability. Updated documentation to reflect the new testing setup and settings architecture, and added new dependencies for testing utilities.
2026-01-28 11:41:59 -05:00

86 lines
3.6 KiB
Markdown

# 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
1. 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](backend/database.md) - PostgreSQL schema, Prisma ORM
- [services/auth.md](backend/services/auth.md) - Plex OAuth, JWT sessions
- [services/config.md](backend/services/config.md) - Settings storage, encryption
- [services/jobs.md](backend/services/jobs.md) - Bull queue, background processors
- [services/scheduler.md](backend/services/scheduler.md) - Recurring jobs (cron)
**Integrations:**
- [integrations/plex.md](integrations/plex.md) - Library scanning, OAuth, matching
- [integrations/audible.md](integrations/audible.md) - Web scraping, metadata
**Automation (Phase 3):**
- [phase3/README.md](phase3/README.md) - Automation pipeline overview
- [phase3/qbittorrent.md](phase3/qbittorrent.md) - Download client integration
- [phase3/prowlarr.md](phase3/prowlarr.md) - Indexer search
- [phase3/ranking-algorithm.md](phase3/ranking-algorithm.md) - Torrent selection
- [phase3/file-organization.md](phase3/file-organization.md) - File management, seeding
**Frontend:**
- [frontend/components.md](frontend/components.md) - React components catalog
- [frontend/routing-auth.md](frontend/routing-auth.md) - Route protection, auth flow
- [frontend/pages/login.md](frontend/pages/login.md) - Login page design
**Admin:**
- [admin-dashboard.md](admin-dashboard.md) - Metrics, monitoring
- [settings-pages.md](settings-pages.md) - Configuration UI
- [setup-wizard.md](setup-wizard.md) - First-time setup flow
**Deployment:**
- [deployment/docker.md](deployment/docker.md) - Docker Compose, volumes, env vars
**Testing:**
- [testing.md](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)