Skip to main content
← Back to Projects

Audiograph

live

An analytics platform that allows users to upload their Spotify data export to generate insights about listening history and patterns.

Timeframe

Q4 2025

Status

live

Categories

spotifymusicanalyticsdata-visualizationprivacychartstime-seriesdata-export

About This Project

An analytics platform that allows users to upload their Spotify data export to generate insights about listening history and patterns.

Features include time-based listening insights with weekly cadence charts, listening streaks and visualizations displaying top artists/tracks/genres over various time ranges.

Built with privacy as a core principle using Row Level Security policies to ensure user data remains protected.

Comprehensive database architecture documented in /docs directory with Supabase setup guides.

Tech Stack

Next.jsTypeScriptSupabasePostgreSQLVitestPrimer ReactSentryPostHog

Why I Built This

When our son was born we had a playlist runnign in the backgorund. A few months after he was born we were curious if we could see what song he was born to

Spotify provides limited listening history but they offer users the ability to export their full listening data

This data is delivered as a json file which is not very user friendly to explore

I wanted to create a privacy-first alternative to visualise this data

I then expanded the data series using Spotify API to fetch additional metadata about tracks, albums and artists to enrich the data set

This project allowed be to experiment with visualizations, charts and time-series data

Key Learnings

Was able to deliver this in 48 hours which I was incredibly proud of
Materialized views significantly improved query performance for analytics aggregations
Integrated Sentry for error monitoring and PostHog for product analytics from day one - invaluable for debugging production issues
GitHub Actions CI/CD workflow automated testing and deployment, catching issues before production
Went down a rabbit hole of trying to enable users to upload a zip file directly rather than extracting locally first. This added significant complexity and potential security risks and I had to scrap it in the end
If you are curious this was the song he was born to: https://youtu.be/Qtb11P1FWnc?si=IZXNKIMKTBGUTkec

Business Model

Free, privacy-first personal analytics tool

Project Links