Files
ReadMeABook/documentation
xFlawless11x ba1efa88f5 feat: add On Grab notification event
Adds request_grabbed event that fires when a torrent/NZB is successfully
handed off to the configured download client, filling the gap between
request_approved (pre-search) and request_available (fully imported).

- Add request_grabbed to NOTIFICATION_EVENTS with titleByRequestType
  (Audiobook Grabbed / Ebook Grabbed), info severity, Details messageLabel
- Add NotificationEventConfig interface and update getEventMeta() return
  type to expose messageLabel to all providers without TypeScript errors
- Add messageLabel: 'Reason' to issue_reported event
- Fix all 4 providers (Discord, ntfy, Pushover, Apprise) to derive message
  field label from meta.messageLabel ?? 'Error' instead of hardcoded
  isIssue ternary — prevents grab details showing as Error
- Trigger request_grabbed in download-torrent.processor.ts after
  client.addDownload() succeeds; message carries torrent title, indexer,
  and download client name; requestType sourced from request.type
- Update notifications.md documentation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 13:49:36 -04:00
..
2026-03-13 12:03:21 -04:00

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:

Integrations:

Automation (Phase 3):

Frontend:

Admin:

Deployment:

Testing:

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)