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.
111 lines
8.3 KiB
Markdown
111 lines
8.3 KiB
Markdown
# Documentation Table of Contents
|
|
|
|
**Purpose:** Quick navigation for AI to locate relevant documentation without reading all files.
|
|
|
|
## Authentication & Users
|
|
- **Plex OAuth, JWT sessions, RBAC** → [backend/services/auth.md](backend/services/auth.md)
|
|
- **Local admin authentication, password change** → [backend/services/auth.md](backend/services/auth.md)
|
|
- **Route protection, auth guards** → [frontend/routing-auth.md](frontend/routing-auth.md)
|
|
- **Login page UI/UX** → [frontend/pages/login.md](frontend/pages/login.md)
|
|
|
|
## Configuration & Setup
|
|
- **First-time setup wizard** → [setup-wizard.md](setup-wizard.md)
|
|
- **Settings management, encryption** → [backend/services/config.md](backend/services/config.md)
|
|
- **Settings UI (modular architecture, all tabs)** → [settings-pages.md](settings-pages.md)
|
|
- **Settings architecture refactoring (Jan 2026)** → [settings-pages.md](settings-pages.md#architecture-refactored-jan-2026)
|
|
- **Setup middleware & status check** → [backend/middleware.md](backend/middleware.md)
|
|
- **Environment variables, PUBLIC_URL, OAuth configuration** → [backend/services/environment.md](backend/services/environment.md)
|
|
|
|
## Database & Data Models
|
|
- **PostgreSQL schema, tables, relationships** → [backend/database.md](backend/database.md)
|
|
- **Prisma ORM, migrations** → [backend/database.md](backend/database.md)
|
|
|
|
## Plex Integration
|
|
- **OAuth, library scanning, fuzzy matching** → [integrations/plex.md](integrations/plex.md)
|
|
- **Availability status, plexGuid linking** → [integrations/plex.md](integrations/plex.md)
|
|
|
|
## Audiobookshelf Integration (PRD - Not Implemented)
|
|
- **Full PRD, architecture, implementation phases** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md)
|
|
- **Step-by-step implementation guide** → [features/audiobookshelf-implementation-guide.md](features/audiobookshelf-implementation-guide.md)
|
|
- **OIDC authentication (Authentik, Keycloak)** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md)
|
|
- **Manual user registration** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md)
|
|
- **Backend mode selection (Plex vs ABS)** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md)
|
|
- **Library service abstraction** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md)
|
|
|
|
## Audible Integration
|
|
- **Web scraping (popular, new releases)** → [integrations/audible.md](integrations/audible.md)
|
|
- **Database caching, real-time matching** → [integrations/audible.md](integrations/audible.md)
|
|
- **Book covers API for login page** → [frontend/pages/login.md](frontend/pages/login.md)
|
|
|
|
## E-book Sidecar
|
|
- **Optional e-book downloads from Anna's Archive** → [integrations/ebook-sidecar.md](integrations/ebook-sidecar.md)
|
|
- **ASIN-based matching, format selection** → [integrations/ebook-sidecar.md](integrations/ebook-sidecar.md)
|
|
- **Non-blocking, atomic failures** → [integrations/ebook-sidecar.md](integrations/ebook-sidecar.md)
|
|
|
|
## Automation Pipeline
|
|
- **Full pipeline overview** → [phase3/README.md](phase3/README.md)
|
|
- **Search via Prowlarr (torrents + NZBs)** → [phase3/prowlarr.md](phase3/prowlarr.md)
|
|
- **Torrent ranking/selection** → [phase3/ranking-algorithm.md](phase3/ranking-algorithm.md)
|
|
- **qBittorrent integration (torrents)** → [phase3/qbittorrent.md](phase3/qbittorrent.md)
|
|
- **SABnzbd integration (Usenet/NZB)** → [phase3/sabnzbd.md](phase3/sabnzbd.md)
|
|
- **File organization, seeding** → [phase3/file-organization.md](phase3/file-organization.md)
|
|
- **Chapter merging (auto-merge to M4B)** → [features/chapter-merging.md](features/chapter-merging.md)
|
|
|
|
## Background Jobs
|
|
- **Bull queue, processors, retry logic** → [backend/services/jobs.md](backend/services/jobs.md)
|
|
- **Scheduled/recurring jobs (cron)** → [backend/services/scheduler.md](backend/services/scheduler.md)
|
|
- **Job types:** search, download monitor, organize, Plex scan, cleanup, retries
|
|
|
|
## Logging
|
|
- **Centralized logging (RMABLogger)** → [backend/services/logging.md](backend/services/logging.md)
|
|
- **LOG_LEVEL configuration** → [backend/services/logging.md](backend/services/logging.md)
|
|
- **Job-aware database persistence** → [backend/services/logging.md](backend/services/logging.md)
|
|
|
|
## Frontend Components
|
|
- **Component catalog (cards, badges, forms)** → [frontend/components.md](frontend/components.md)
|
|
- **RequestCard, StatusBadge, ProgressBar** → [frontend/components.md](frontend/components.md)
|
|
- **Pages: home, search, requests, profile** → [frontend/components.md](frontend/components.md)
|
|
|
|
## BookDate (AI Recommendations)
|
|
- **AI-powered recommendations, swipe interface** → [features/bookdate.md](features/bookdate.md)
|
|
- **Configuration, OpenAI/Claude integration** → [features/bookdate.md](features/bookdate.md)
|
|
- **Setup wizard integration, settings** → [features/bookdate.md](features/bookdate.md)
|
|
|
|
## Admin Features
|
|
- **Dashboard (metrics, downloads, requests)** → [admin-dashboard.md](admin-dashboard.md)
|
|
- **Jobs management UI** → [backend/services/scheduler.md](backend/services/scheduler.md)
|
|
- **Request deletion (soft delete, seeding awareness)** → [admin-features/request-deletion.md](admin-features/request-deletion.md)
|
|
|
|
## Deployment
|
|
- **Docker Compose setup (multi-container)** → [deployment/docker.md](deployment/docker.md)
|
|
- **Unified container (all-in-one)** → [deployment/unified.md](deployment/unified.md)
|
|
- **Environment variables, volumes** → [deployment/docker.md](deployment/docker.md)
|
|
- **Database setup (Prisma), migrations** → [deployment/docker.md](deployment/docker.md)
|
|
|
|
## Testing
|
|
- **Backend unit test framework, scripts** [testing.md](testing.md)
|
|
|
|
## Feature-Specific Lookups
|
|
**"How do I add a new audiobook?"** → [integrations/audible.md](integrations/audible.md) (scraping), [phase3/README.md](phase3/README.md) (automation)
|
|
**"How do torrent downloads work?"** → [phase3/qbittorrent.md](phase3/qbittorrent.md), [backend/services/jobs.md](backend/services/jobs.md)
|
|
**"How do Usenet/NZB downloads work?"** → [phase3/sabnzbd.md](phase3/sabnzbd.md), [backend/services/jobs.md](backend/services/jobs.md)
|
|
**"How does Plex matching work?"** → [integrations/plex.md](integrations/plex.md)
|
|
**"How does e-book sidecar work?"** → [integrations/ebook-sidecar.md](integrations/ebook-sidecar.md)
|
|
**"How do I enable e-book downloads?"** → [integrations/ebook-sidecar.md](integrations/ebook-sidecar.md), [settings-pages.md](settings-pages.md)
|
|
**"How do scheduled jobs work?"** → [backend/services/scheduler.md](backend/services/scheduler.md)
|
|
**"How do I configure external services?"** → [setup-wizard.md](setup-wizard.md), [settings-pages.md](settings-pages.md)
|
|
**"What's the database schema?"** → [backend/database.md](backend/database.md)
|
|
**"How does authentication work?"** → [backend/services/auth.md](backend/services/auth.md)
|
|
**"How do I change my password?"** → [backend/services/auth.md](backend/services/auth.md) (local users only - accessed via user menu in header)
|
|
**"How do I delete requests?"** → [admin-features/request-deletion.md](admin-features/request-deletion.md)
|
|
**"How do I deploy?"** → [deployment/docker.md](deployment/docker.md) (multi-container), [deployment/unified.md](deployment/unified.md) (all-in-one)
|
|
**"How do I use the unified container?"** → [deployment/unified.md](deployment/unified.md)
|
|
**"OAuth redirects to localhost / PUBLIC_URL not working"** → [backend/services/environment.md](backend/services/environment.md)
|
|
**"What environment variables do I need?"** → [backend/services/environment.md](backend/services/environment.md)
|
|
**"How does chapter merging work?"** → [features/chapter-merging.md](features/chapter-merging.md)
|
|
**"How does logging work?"** → [backend/services/logging.md](backend/services/logging.md)
|
|
**"How does Audiobookshelf integration work?"** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md) (PRD only, not implemented)
|
|
**"How do I use OIDC/Authentik/Keycloak?"** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md) (PRD only, not implemented)
|
|
**"How does manual user registration work?"** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md) (PRD only, not implemented)
|
|
**"How do I switch from Plex to Audiobookshelf?"** → [features/audiobookshelf-integration.md](features/audiobookshelf-integration.md) (PRD only, not implemented)
|