Files
muzick/docs/architecture/01-system-overview.md
T

53 lines
1.8 KiB
Markdown

# System Overview
## High-Level Architecture
`muzick` follows a distributed architecture centered around a shared PostgreSQL database and a distributed task queue (BullMQ).
```mermaid
graph TD
User((User)) --> Web[Frontend - React/Vite]
Web --> API[Backend - Fastify]
API --> DB[(PostgreSQL)]
API --> Search[Typesense]
API --> Cache[(Redis)]
API --> Queue[BullMQ]
subgraph Workers
W1[Metadata Worker]
W2[Essentia Audio Worker]
W3[Cleanup/Sweep Worker]
end
Queue --> W1
Queue --> W2
Queue --> W3
W1 --> DB
W2 --> DB
W3 --> DB
W1 --> External[External APIs: MusicBrainz/Discogs]
W2 --> Audio[/Filesystem/Music]
```
## Component Roles
### **1. Frontend (The Interface)**
- **React/Vite:** High-performance UI.
- **TanStack Router/Query:** Handles complex navigation and provides the **Look-ahead Buffer** for the continuous playback stream.
- **Zustand:** Manages the active "Vibe" session state and local playback queue.
### **2. Backend (The Brain)**
- **Fastify:** High-throughput API server.
- **Business Logic:** Manages the **Rolling Window** recommendation algorithm, the **Dislike State Machine**, and the **Session Management**.
- **Typesense:** Provides ultra-fast fuzzy search across the entire library.
### **3. Workers (The Muscle)**
- **Metadata Worker:** Orchestrates enrichment via MusicBrainz, Discogs, and LRCLib.
- **Essentia Worker:** Performs heavy CPU-bound audio feature extraction (BPM, Key, etc.).
- **Sweep Worker:** Handles periodic cleanup (Dislike $\rightarrow$ Deletion) and filesystem-to-DB reconciliation.
### **4. Data Layer**
- **PostgreSQL:** The ultimate source of truth for metadata, user preferences, and session history.
- **Redis:** Powers the task queue (BullMQ) and provides ephemeral session data.