Data Engineering2026
spotify-elt-pipeline
An end-to-end ELT pipeline that turns my own Spotify listening history into an analytics-ready warehouse. A Python job pulls play data from the Spotify Web API and lands it raw in PostgreSQL; dbt then models it into a star schema across staging, intermediate, and mart layers; and Metabase sits on top for exploration. The whole stack runs on Docker Compose and is covered by 39 dbt tests plus a pytest suite, so every run is reproducible and fully replayable.
- Python
- PostgreSQL
- dbt
- Docker Compose
- Metabase
- pytest
Architecture
- Spotify Web APISource
- Raw JSONExtract · Python
- PostgreSQL — rawLoad
- PostgreSQL — analyticsTransform · dbt
- MetabaseServe · BI
In the dashboard


Highlights
- Extracts personal Spotify listening data through the Spotify Web API in Python, lands it raw in PostgreSQL, and transforms it in-warehouse with dbt.
- Models an analytics-ready star schema (fact_plays with dim_track, dim_artist, dim_genre, dim_date, and an artist–genre bridge) using layered dbt models across staging, intermediate, and mart layers.
- Enforces data quality with 39 dbt tests and a pytest suite covering API client units and idempotent loader integration, keeping runs fully replayable.