Files
ReadMeABook/documentation
kikootwo 0d64b90fd0 Use gosu for reliable UID:GID switching
Fix PUID/PGID collision issues by using gosu to run services with exact UID:GID. Changes include:

- Added redis-start.sh and updated app-start.sh to load /etc/environment, determine PUID/PGID, and invoke gosu "$PUID:$PGID" to start Redis and the Next.js app (with verification and fallbacks).
- Updated entrypoint.sh to persist PUID/PGID into /etc/environment, document the gosu approach, and adjust startup messaging.
- Updated supervisord.conf to run the new startup wrappers as root (so they can use gosu) instead of running processes directly as specific users.
- Dockerfile updated to install gosu and copy the redis-start.sh wrapper.
- Documentation updated (deployment/unified.md) describing the PUID collision bug, the root cause, and the gosu-based fix.

This resolves cases where PUID collides with existing system users (e.g., nobody) which previously caused processes to run with the wrong GID and produce EACCES errors.
2026-02-02 20:19:09 -05:00
..
2026-01-28 11:41:24 -05: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)