{"slug": "how-we-built-dj-roots-an-ai-powered-music-recommendation-platform", "title": "How We Built DJ ROOTS: An AI-Powered Music Recommendation Platform", "summary": "A team of developers built DJ ROOTS, a real-time collaborative DJ platform that allows everyone in a room to vote on songs and control playback through hand gestures. The platform uses Supabase Realtime for instant synchronization and Google MediaPipe for touch-free gesture control, with audio extracted via yt-dlp for seamless playback.", "body_md": "*Crowd Vibes. You Control.*\n\nMusic is one of the best ways to bring people together. However, during parties, college events, hostel gatherings, or study sessions, one common problem always exists—**who gets to control the music?**\n\nUsually, one person owns the playlist while everyone else keeps requesting songs. This often creates confusion, interruptions, and arguments over what should play next.\n\nOur team wanted to solve this problem by creating a platform where **everyone in the room gets an equal voice.**\n\nWelcome to **DJ ROOTS**.\n\nTraditional music streaming at group events has several limitations:\n\nWe wanted to build something that makes music **democratic**.\n\nDJ ROOTS is a **real-time collaborative DJ platform** where anyone can join a room using a simple room code.\n\nParticipants can:\n\nInstead of one person deciding the playlist, **the entire crowd decides what plays next.**\n\nEverything happens in real time without refreshing the page.\n\nEvery participant has equal voting power.\n\nThe queue automatically rearranges itself according to the most popular songs.\n\nUsing Supabase Realtime, every vote, new song, and playback update is instantly visible across all connected devices.\n\nNo polling.\n\nNo manual refresh.\n\nOne of the most exciting features of DJ ROOTS is touch-free control.\n\nUsing Google MediaPipe, the host can control playback through hand gestures.\n\nSupported gestures include:\n\nThe webcam processing happens locally, so video never leaves the user's device.\n\nInstead of embedding YouTube's player, our backend extracts the audio stream using **yt-dlp**.\n\nThis allows:\n\nEvery project teaches something, and DJ ROOTS was no exception.\n\nThe biggest challenge was extracting audio reliably.\n\nCloud-hosted servers often get blocked due to YouTube's bot detection mechanisms.\n\nWe solved this by designing a backend that can run from a trusted local or residential network for demonstrations and testing.\n\nWhen multiple users vote simultaneously, maintaining a consistent queue order becomes difficult.\n\nWe solved this by storing vote counts in PostgreSQL and using database triggers to automatically recalculate rankings.\n\nModern browsers prevent automatic audio playback.\n\nInstead of treating this as a limitation, we created an **\"Enter DJ ROOTS\"** interaction that unlocks audio playback while improving the user experience.\n\nMaking webcam gestures responsive without affecting application performance required careful optimization.\n\nUsing MediaPipe allowed us to process gestures directly in the browser with low latency.\n\nThis project was built through close collaboration among our team members.\n\nWe divided responsibilities across frontend development, backend implementation, real-time synchronization, UI design, and overall integration to ensure that every component worked seamlessly together.\n\nWe have several exciting ideas planned for future releases:\n\nBuilding DJ ROOTS helped us gain practical experience with:\n\nThis project showed us that building a polished real-time application involves much more than writing code—it requires solving real engineering challenges.\n\nDJ ROOTS started with a simple question:\n\n**\"Why should one person control the music when everyone is listening?\"**\n\nOur goal was to create a platform where every participant contributes to the playlist and the crowd decides the vibe together.\n\nWhile there are still many exciting features ahead, we're proud of what we've built and excited to continue improving it.\n\nIf you have suggestions, feedback, or would like to collaborate, we'd love to hear from you!\n\nThanks for reading! 🎧❤️", "url": "https://wpnews.pro/news/how-we-built-dj-roots-an-ai-powered-music-recommendation-platform", "canonical_source": "https://dev.to/ananyasharma_14/how-we-built-dj-roots-an-ai-powered-music-recommendation-platform-1o70", "published_at": "2026-07-13 18:15:42+00:00", "updated_at": "2026-07-13 18:45:26.562698+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "computer-vision"], "entities": ["DJ ROOTS", "Supabase", "Google MediaPipe", "yt-dlp", "PostgreSQL"], "alternates": {"html": "https://wpnews.pro/news/how-we-built-dj-roots-an-ai-powered-music-recommendation-platform", "markdown": "https://wpnews.pro/news/how-we-built-dj-roots-an-ai-powered-music-recommendation-platform.md", "text": "https://wpnews.pro/news/how-we-built-dj-roots-an-ai-powered-music-recommendation-platform.txt", "jsonld": "https://wpnews.pro/news/how-we-built-dj-roots-an-ai-powered-music-recommendation-platform.jsonld"}}