You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Star1 (1)You must be signed in to star a repository
About
Your music, understood. A music discovery platform connecting Spotify & Apple Music with a 7-dimension adaptive recommendation engine and conversational AI.
Your music, understood. A music discovery platform that connects to Spotify and Apple Music, analyzes your actual listening data, and delivers genuinely personalized recommendations — powered by a 6-dimension scoring engine, 4-stage audio/metadata enrichment pipeline, and conversational AI.
Your musical DNA — top genres (with regional specificity like "Italian Hip-Hop/Rap"), artists with featuring detection, audio traits, embedding centroids, familiarity score
6-Dim Recommendations
CLAP + MERT + EffNet embeddings + genre cosine + scalar audio + artist affinity — context-adaptive weights shift per user
3-step onboarding wizard: pick playlists, rank artists (drag-to-reorder), pick favorite songs — compensates for Apple Music's missing play counts
AI Chat
Ask GPT about your taste, get recommendations by description, explore music conversationally — powered by the operator-provided OpenAI key (no BYOK)
Playlists
Browse your real Apple Music / Spotify playlists with per-playlist recommendations
Listening Timeline
Chronological song view with date labels
Multi-Service
Connect Spotify and/or Apple Music — unified profiles with ISRC dedup and genre normalization
Admin Dashboard
Standalone React dashboard on its own Railway service (admin.music.menghi.dev): songs + artists drill-down tables, worker heartbeat, diagnostics, SSE log stream
Background Worker
Artist cobweb discovery, global enrichment, ISRC backfill via free APIs (Deezer + MusicBrainz), preview audio caching
Plus additive bonuses: calibration boost (+0.03 to +0.20, zeroed on genre mismatch), diversity penalty (MMR), staleness cooldown, cross-strategy bonus, mood boost.
Missing dimensions redistributed proportionally — graceful degradation when embeddings are unavailable.
Enrichment Pipeline (4 stages)
Shared by both indexer and worker. Each stage checks cache before making API calls — no duplicate requests. Preview audio cached locally to survive Deezer URL expiry.
Global ISRC cache (audio_features_global, audio_embeddings_global): features enriched once per song, shared across all users. ISRC backfill via Deezer + MusicBrainz free APIs.
Quick Start
Sandbox Mode (no API keys needed)
git clone https://github.com/Cyberfilo/SmarTaste.git &&cd SmarTaste
# Database
docker compose up db -d
# Backendcd backend && uv sync --dev
MUSICMIND_SANDBOX=true uv run alembic upgrade head
MUSICMIND_SANDBOX=true uv run uvicorn musicmind.app:app --reload --port 8000
# Frontend (new terminal)cd frontend && npm install && npm run dev
Import repo → auto-detects rootDirectory: frontend → set NEXT_PUBLIC_API_URL
Backend
Railway
Add PostgreSQL service → add GitHub service (backend/) → set env vars
Worker
Railway
Separate service from worker/ directory → same DATABASE_URL + FERNET_KEY
Admin
Railway
Separate service from admin/ directory (two-stage Dockerfile builds the Next.js dashboard then serves it from FastAPI) → set ADMIN_PASSWORD + ADMIN_SECRET + BACKEND_URL
Logs DB
Railway
Second PostgreSQL instance → set MUSICMIND_LOGS_DATABASE_URL on backend + worker
NocoDB
Railway
Docker image nocodb/nocodb → separate metadata PostgreSQL
Migrations
Auto
Dockerfile runs alembic upgrade head on every deploy
Environment Variables
All backend variables use the MUSICMIND_ prefix. See .env.example for the full list.
Variable
Required
Description
MUSICMIND_DATABASE_URL
Yes
PostgreSQL asyncpg connection string
MUSICMIND_FERNET_KEY
Yes*
Fernet encryption key for secrets at rest
MUSICMIND_JWT_SECRET_KEY
Yes*
JWT HS256 signing secret
MUSICMIND_SANDBOX
—
true for dev defaults (skips key requirements)
MUSICMIND_SPOTIFY_CLIENT_ID
—
Spotify OAuth client ID
MUSICMIND_SPOTIFY_CLIENT_SECRET
—
Spotify OAuth client secret
MUSICMIND_APPLE_TEAM_ID
—
Apple Developer Team ID
MUSICMIND_APPLE_KEY_ID
—
MusicKit key ID
MUSICMIND_APPLE_PRIVATE_KEY_PATH
—
Path to .p8 key file (or _B64 for base64)
MUSICMIND_LOGS_DATABASE_URL
—
Separate PostgreSQL for request/enrichment/error logs
MUSICMIND_LASTFM_API_KEY
—
Last.fm API key (free, enables tags + collaborative filtering)
MUSICMIND_SOUNDSTAT_API_KEY
—
SoundStat API key for premium enrichment
MUSICMIND_ADMIN_SECRET
—
Shared secret for admin dashboard → backend auth
*Auto-generated on first Docker deploy if not set.
Worker
Variable
Description
WORKER_CONCURRENCY
Tracks enriched in parallel (default 5)
WORKER_BATCH_SIZE
Tracks per enrichment batch (default 50)
WORKER_POLL_INTERVAL
Seconds between cycles (default 60)
WORKER_ARTIST_DEPTH
Top songs per artist to fetch (default 25)
Admin Dashboard
Variable
Description
ADMIN_PASSWORD
Login password for admin UI
ADMIN_SECRET
Shared secret sent as X-Admin-Secret header to backend
BACKEND_URL
Backend URL to proxy API requests to
NocoDB
Variable
Description
NC_DB
Internal PostgreSQL URL for NocoDB metadata storage
Your music, understood. A music discovery platform connecting Spotify & Apple Music with a 7-dimension adaptive recommendation engine and conversational AI.