A web-based tool for DJs to curate seamless sets faster.
It recommends harmonically compatible song transitions using:
- Camelot wheel key matching
- BPM-based tempo compatibility
- Approximate Nearest Neighbors (ANN) using FAISS ML model
Tech Stack
🧠 Python + Flask + SQLAlchemy (Backend)
🎵 Next.js + TypeScript + Tailwind (Frontend)
🔍 FAISS (Vector search for song similarity)
🐳 Dockerized for easy setup
From your frontend, users can:
- Search for a base song
- View harmonic & tempo-compatible recommendations
- Use interactive sliders and filters to fine-tune results
- Toggle dark mode, manage playlists, and get recommendations instantly
The app is designed to be fast, modular, and DJ-friendly.
- Install Docker
- Make sure Docker is running
This starts both the backend and frontend.
docker-compose up --build- Frontend: http://localhost:3000
- Backend: http://localhost:5001
Stop services:
docker-compose stopRestart services:
docker-compose restartStop/restart individual containers:
docker-compose stop frontend
docker-compose restart backendClean up unused Docker resources:
docker system prunedocker build -t djsongmatch .
docker run -p 3000:3000 djsongmatchcd src/app/backend
docker build -t flask-backend .
docker run -p 5001:5001 flask-backendpython3 -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # WindowsInstall dependencies:
pip install -r backend/requirements.txtExample (from root level):
python3 -m backend.scripts.pre_process_datadeactivate