Every song has a fingerprint. Find yours.
SoundDNA analyzes any Spotify or YouTube link and generates a unique musical DNA — the actual ingredients that make a song sound the way it does. Pin a moment you loved (e.g. "1:20") and it focuses the analysis on that exact section. Then it finds other songs built from the same ingredients.
- Paste a link — Spotify or YouTube
- Pin a moment (optional) — the timestamp you loved
- Get a fingerprint — radar chart + ingredient breakdown: key, BPM, instruments, production era, vocal style, genre blend
- Get recommendations — songs that match the same musical DNA, not just the same genre
Most music apps recommend based on genre or listening history. SoundDNA recommends based on what a song is made of. If you loved the acoustic guitar + 98 BPM + melancholic minor key of a moment in one song, it finds other songs with those same building blocks — regardless of artist, language, or era.
| Layer | Tech |
|---|---|
| Frontend | React + Tailwind CSS + Recharts |
| Backend | FastAPI (Python) |
| Audio Analysis | Spotify Web API |
| Database | Supabase (PostgreSQL) |
| Frontend hosting | Vercel |
| Backend hosting | Railway |
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Create .env file
cp .env.example .env
# Fill in your keys (see Environment Variables below)
uvicorn main:app --reload
# Runs on http://localhost:8000cd frontend
npm install
npm run dev
# Runs on http://localhost:5173SPOTIFY_CLIENT_ID=your_spotify_client_id
SPOTIFY_CLIENT_SECRET=your_spotify_client_secret
SUPABASE_URL=your_supabase_project_url
SUPABASE_SERVICE_KEY=your_supabase_service_role_keyVITE_API_URL=http://localhost:8000/apiFor production (Vercel), set VITE_API_URL to your Railway backend URL.
- Create a free project at supabase.com
- Go to SQL Editor
- Run the contents of
supabase_schema.sql - Copy your project URL and service role key to
.env
- Push repo to GitHub
- Go to railway.app → New Project → Deploy from GitHub
- Select the
backend/folder - Add environment variables in Railway dashboard
- Railway auto-detects Python and deploys
- Go to vercel.com → New Project → Import from GitHub
- Set Root Directory to
frontend/ - Add
VITE_API_URLenvironment variable pointing to your Railway URL - Deploy
Every song analyzed gets stored in our database with its full fingerprint. Over time this becomes a proprietary dataset of musical DNA. The roadmap:
- Deep audio analysis (waveform-level ML)
- Public API for developers
- User accounts + saved fingerprints
- Social sharing — compare your music DNA with friends
- Browser extension for Spotify Web Player
Get your credentials at developer.spotify.com:
- Create an app
- Copy Client ID and Client Secret
- Add
http://localhost:8000to Redirect URIs (for future OAuth)
Built with ❤️ by reddynitish