Catalog intelligence
Search across tracks, artists, albums, and playlists through normalized MPD entities - relational joins, not bag-of-words.
Statify turns a playlist-scale catalog and your own listening history into top artists, trend deltas, heatmaps, and discovery paths — backed by hand-written SQL on the Spotify Million Playlist Dataset.
Tracks indexed
Playlists
SQL queries
Internal rating
Normalized tables
12
Advanced SQL queries
6
30s preview source
iTunes
Artwork source
Spotify
Project scope
Statify combines normalized playlist data, account sessions, listening history, playlist creation, admin operations, and SQL analytics into one demoable product - built for the COMP306 course at Koç University.
View on GitHub →Team
Designed for the demo loop
Search across tracks, artists, albums, and playlists through normalized MPD entities - relational joins, not bag-of-words.
Play iTunes 30-second previews inline and record every event with idempotent writes so the history is always trustworthy.
Turn raw listening into top artists, trend deltas, hour-of-day heatmaps, hidden gems, and discovery paths — all hand-written queries.
Create collections, reorder tracks, and compare public playlists side-by-side. Every action round-trips through the API.
Connected stack
The frontend is not a static mock: every browse, play, playlist, and analytics route is wired through a NestJS API and a shared DTO package.
SELECT a.name, COUNT(p.id) AS plays, SUM(t.duration_ms) AS total_ms FROM listening_events e JOIN tracks t ON t.id = e.track_id JOIN artists a ON a.id = t.artist_id WHERE e.user_id = $1 AND e.played_at > NOW() - '7 days' GROUP BY a.id ORDER BY plays DESC LIMIT 10;
Demo path
Tracks, artists, albums, playlists — all from one query box.
30 seconds, recorded as an idempotent listening event.
Top artists, hour-of-day heatmaps, and hidden gems.
Free during the demo period. Connect to start logging listening events and watch your stats build up in real time.