← All projects
Portfolio

📻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.

ProjectFeatured
🎵
Personal DJ music app — 41K+ tracks, DuckDB WASM queries, Camelot harmonic mixing, daily YT Music sync

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)