mirror of
https://github.com/kikootwo/ReadMeABook.git
synced 2026-06-02 20:30:10 +00:00
94dbaf073b
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.
86 lines
3.6 KiB
Markdown
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)
|