← wiki

tidal-radio

overview

Self-hosted multi-station live radio. People link their Tidal playlists (or submit individual tracks) to a station; the app downloads the audio, runs a fair-shuffle rotation, and streams each station as its own Icecast mount.

Replaced an earlier Last.fm-based playlist generator entirely. Built fresh with its own schema, rotation logic, and UI identity ("Transmission" — teal, worn/failing CRT aesthetic).

tech stack

Backend: Node + Express, better-sqlite3, WebSockets.

Streaming: Liquidsoap → Icecast, fronted by Caddy.

Frontend: htmx + server-rendered fragments — no build step.

Deployment: Docker Compose, self-hosted.