← changelog

music app

ongoing

private music streaming for your inner circle. paste spotify/youtube links, auto-download, stream to friends.

mar 18, 2026 – nowsolo: product, full-stack, infrastructure
flutternestjsprismaredisbullwebsocketspotdl

your own personal music streaming service. paste a spotify or youtube link, it auto-downloads the mp3. stream to your friends, invite only. curated playlists by you. no ads, no algorithm, no bs. not for the masses, just for the people you care about.

how it works

  1. 1paste a spotify or youtube link. spotdl downloads the mp3 with full metadata (album art, id3 tags)
  2. 2bull + redis queue processes downloads asynchronously, websocket pushes live progress to the app
  3. 3library module scans the filesystem, indexes tracks with metadata, supports search and artist grouping
  4. 4audio streaming serves files with http range requests: seeking, pause/resume, partial downloads
  5. 5flutter app connects to the backend, streams audio with just_audio, shows library and player UI

key decisions

monorepo (flutter + nestjs in one repo)

shared types between backend and app. single git history for atomic changes. simpler ci/cd. easier when you're the only developer.

spotdl over yt-dlp

better spotify metadata extraction. auto-fetches album art. handles playlists natively. still uses youtube as the audio source.

raspberry pi as the server

self-hosted on a pi 5 (8GB). 64GB microSD holds ~9,000 songs. tailscale for remote access. perfect for 10-50 concurrent users. total cost: the pi you already own.

websocket for download progress

downloads take 10-30 seconds. polling would hammer the server. websocket pushes real-time progress. the app shows a live progress bar without any API calls.

what i built

  • nestjs backend with modular architecture: download, library, stream, queue, gateway modules
  • spotify/youtube → mp3 pipeline with spotdl, id3 tagging, and album art extraction
  • bull + redis job queue with live websocket progress updates
  • audio streaming with http range request support (seeking, partial downloads)
  • library scanner with metadata indexing, search, and artist grouping
  • flutter mobile app with spotify-inspired design, provider state management
  • raspberry pi deployment with tailscale for remote access

timeline

mar 18, 2026

monorepo setup. flutter + nestjs, database schema, download module with spotdl

mar 18, 2026

queue system (bull + redis), spotify metadata + id3 tagging

mar 19, 2026

library management, audio streaming with http range requests

mar 19, 2026

websocket gateway for live updates, flutter app with spotify-inspired design