📻PYAAR Radio
A personal DJ music app with 41K+ tracks, DuckDB WASM for in-browser SQL filtering, Camelot harmonic mixing, and a daily auto-sync pipeline from YouTube Music. Built with Next.js, React 19, and Tailwind.

GitHub: prahlaadr/pyaar-radio | Live: pyaar-radio.vercel.app
Why I Built This
Built as a personal DJ tool to manage a massive music library with smart filtering — by tempo, key, genre, vibe — that streaming apps don't offer. Needed harmonic mixing support and a way to sync playlists automatically.
How It Works
Next.js 16 + React 19 + Tailwind v4 frontend. DuckDB WASM runs SQL queries in the browser over a 41K-track CSV. YouTube IFrame API + SoundCloud for playback. Camelot wheel for harmonic key matching. Python sync script runs daily at 3AM via cron, pulls from YT Music API, auto-pushes to GitHub which triggers Vercel deploy.
Notable Technical Details
- DuckDB WASM for in-browser SQL (no backend needed)
- Camelot harmonic mixing system for DJ key matching
- fuse.js fuzzy search across 41K+ tracks
- @tanstack/react-virtual for virtualized list rendering
- hotkeys-js keyboard shortcuts for DJ workflow
- PWA support for mobile use
- Password auth via Next.js middleware
Supporting Infrastructure
PYAAR Radio is powered by a suite of backend tools that keep the library fresh and enriched:
- Pyaar Crate — Python sync scripts that pull from YouTube Music via Playwright, hydrate metadata from Spotify and audio analysis (essentia), and auto-push to GitHub daily at 3AM
- Soulseek / Nicotine+ — HQ music downloads (320kbps+ / FLAC) to replace low-quality rips in the library
- SoundCloud Upgrader — Batch upgrade SoundCloud rips to best available quality
- NTS Extractor — Extract tracklists from NTS Radio shows for discovery (GitHub)