DabMusic
A personal music site and immersive player for a fixed catalogue. Built from scratch with Next.js 16, React 19 and Tailwind 4, it scans the library at build time and pre-renders 16 albums and 46 tracks, while playback state, queue, shuffle and repeat survive reloads. A custom DMLL lyric format drives word-level timing, full-screen lyric sweeps and ad-libs across 33 tracks, with a service worker, PWA support and per-album OG images. Built largely with AI in a vibe-coding workflow: I set the product direction, made the design calls and signed off on the work, while AI handled most of the implementation, refactoring and content migration.




