3adefe929b
Initial design for slice 1 (acquisition engine): three-container architecture (Next.js UI, Python worker, slskd), the six-stage pipeline, source-adapter contract, data model, error handling, and testing strategy. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
31 lines
1.2 KiB
Markdown
31 lines
1.2 KiB
Markdown
# Lyra
|
|
|
|
Self-hosted, multi-source music acquisition and library tool — a replacement for
|
|
Lidarr + NZBget. Lyra discovers, ranks, downloads, tags, and organizes music across
|
|
sources of differing quality: **Qobuz** (lossless/hi-res), **Soulseek** (P2P),
|
|
**YouTube** (universal lossy fallback), and **Spotify** (discovery/metadata only).
|
|
|
|
## Status
|
|
|
|
Early design. Built in three slices:
|
|
|
|
1. **Acquisition engine** — *in progress*. Given an album/track, find the best
|
|
available source, download it, tag it against MusicBrainz, and file it into a
|
|
clean library.
|
|
2. **Library manager** — Lidarr-style monitoring, wanted lists, auto-grab of new
|
|
releases.
|
|
3. **Discovery** — Spotify/recommendation-driven finding of new music.
|
|
|
|
## Architecture
|
|
|
|
Three Docker containers on a home server:
|
|
|
|
- **Next.js app** — UI + API (search, request, queue, progress, settings).
|
|
- **Python worker** — all source integration (streamrip, yt-dlp, slskd client,
|
|
beets/mutagen), running the six-stage acquisition pipeline.
|
|
- **slskd** — off-the-shelf headless Soulseek daemon.
|
|
|
|
**Postgres** is the shared source of truth; a shared `/music` volume is the library.
|
|
|
|
See [`docs/superpowers/specs/`](docs/superpowers/specs/) for the full design.
|