The story behind
your listening.

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
180M

Tracks indexed

Playlists
2.4M

Playlists

SQL queries
6

SQL queries

Internal rating
4.9★

Internal rating

Minutes listened · 30d
1,284min
↑ 18%
Top artists · this week
Phoebe Bridgers
74 plays
Tycho
52 plays
Bonobo
41 plays
▶ Now playing
Motion Sickness
Phoebe Bridgers · Stranger in the Alps

Normalized tables

12

Advanced SQL queries

6

30s preview source

iTunes

Artwork source

Spotify

Project scope

Built around the
Million Playlist Dataset.

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

AA
Aykhan Ahmadzada
Project lead
ET
Elshad Toklayev
Backend engineer
EM
Eljan Mammadli
Data & analytics
RD
Rahila Dashdiyeva
Frontend engineer

Designed for the demo loop

Everything the app does is
one click away.

Catalog intelligence

Search across tracks, artists, albums, and playlists through normalized MPD entities - relational joins, not bag-of-words.

Preview listening

Play iTunes 30-second previews inline and record every event with idempotent writes so the history is always trustworthy.

SQL-backed stats

Turn raw listening into top artists, trend deltas, hour-of-day heatmaps, hidden gems, and discovery paths — all hand-written queries.

Playlist lab

Create collections, reorder tracks, and compare public playlists side-by-side. Every action round-trips through the API.

Connected stack

MPD catalog in Postgres,
previews from iTunes,
artwork from Spotify.

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.

NestJS 10PostgreSQL 16Prisma 5Next.js 15React 19Tailwind 4ZodArgon2idJWT
statify/apps/api · top-artists.query.sql
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;
Query result · 14ms
Phoebe Bridgers74
Tycho52
Bonobo41
King Krule28

Demo path

A short route through
the working app.

🔍phoebe
Phoebe Bridgers · artist
Motion Sickness · track
Stranger in the Alps · album
01

Search the catalog

Tracks, artists, albums, playlists — all from one query box.

0:11 / 0:30
02

Play an iTunes preview

30 seconds, recorded as an idempotent listening event.

MTWTFSS
23.4h this week · +12%
03

Review history & stats

Top artists, hour-of-day heatmaps, and hidden gems.

Start tracking your sound.

Free during the demo period. Connect to start logging listening events and watch your stats build up in real time.