A private Spotify analytics app that works from exported Spotify Streaming History JSON files.
- Import Spotify streaming history JSON (merge or replace)
- Manual Spotify sync from sidebar
- Auto-sync scheduler (configurable in Settings, default every hour)
- Currently listening card with progress bar (auto-refresh configurable in Settings)
- Time-range filters: Today, This week, This month, This year, All time, Custom range
- Dashboard cards and charts (pie + timeline)
- Drill-down pages for:
/songs/albums/artists/genres
- Detail pages per item with trends and related tracks
- Theme settings with presets (dark, light, nord, matrix, sunset)
- Display unit toggle (hours or minutes)
- Source: Spotify Extended Streaming History style records (
ts,ms_played, track/artist/album metadata) - Stored locally in
data/history.json - No snapshot sync model required
- Install dependencies:
npm install- Copy env template:
cp .env.example .env.local- Fill Spotify credentials in
.env.local:
SPOTIFY_CLIENT_IDSPOTIFY_CLIENT_SECRETSPOTIFY_REDIRECT_URI(must match Spotify app settings exactly)APP_BASE_URL(public app URL, especially when using reverse proxies/tunnels)
- Run:
npm run dev- Open
http://localhost:3000 - Connect Spotify in
Settings, then import your Spotify JSON history file.
- Copy env template:
cp .env.example .env- Build and run:
docker compose up -d --build- Set
.envwith your real public domain for:
APP_BASE_URLSPOTIFY_REDIRECT_URI
- Open your domain and connect Spotify in Settings.
- Import your Spotify JSON file in Settings.
Data is persisted in the named Docker volume spotify_tracker_data.