A decentralized music tracking and discovery platform built on AT Protocol 🎵 rocksky.app
spotify atproto lastfm musicbrainz scrobbling listenbrainz
at main 129 lines 4.5 kB view raw view rendered
1# Rocksky 2 3[![ci](https://github.com/tsirysndr/rocksky/actions/workflows/ci.yml/badge.svg)](https://github.com/tsirysndr/rocksky/actions/workflows/ci.yml) 4[![discord](https://img.shields.io/discord/1103720908104929321?label=discord&logo=discord&color=5865F2)](https://discord.gg/EVcBy2fVa3) 5 6A decentralized music tracking and discovery platform built on the AT Protocol 🎵 , see [Rocksky](https://rocksky.app). 7 8![Preview](./.github/assets/preview.png) 9 10## ✨ Features 11 12### 🎵 Scrobbling APIs 13- **Last.fm Compatible API** – drop-in replacement for Last.fm scrobblers 14- **ListenBrainz Compatible API** – works with clients that support ListenBrainz 15 16### 🕒 Playback & History 17 18- **Recently Played Timeline** – browse your listening history 19- **Stories View** – see what other users are playing in real time 20- **Stats** – visualize scrobbles per day 21 22### 📊 User Insights 23 24- **Top Artists, Tracks, and Albums** – personalized charts of your listening habits 25- **Shoutbox & Likes** – interact with other listeners and share reactions 26 27### 🌐 Client Integrations 28- **Spotify** – detect now playing tracks and scrobble directly from Spotify 29- **Jellyfin** – track plays from your media server 30- **Pano Scrobbler** – Android/Linux/Windows support 31- **WebScrobbler** – scrobble directly from your browser 32 33### 🔍 Search 34- **Search Engine** – fast search powered by MeiliSearch 35 36## 🚧 Coming Soon / Roadmap 37- **Webhooks** - subscribe to scrobble events and integrate with Discord or your own apps 38- **Personalized Feeds** – discover music through community-driven feed algorithms 39- **Last.fm → Rocksky** Mirroring (Future Scrobbles) – automatically mirror new scrobbles from Last.fm into Rocksky 40- **Rocksky Connect** – remote playback across devices (similar to Spotify Connect) 41- **Multi-Source Libraries** – browse and scrobble from Google Drive, Dropbox, S3, FTP, and more 42- **Stream & Scrobble Your Own Music** – upload your library and play directly on Rocksky 43- **Extensions** – customize and extend Rocksky with your own logic 44- **Crossfade & Equalizer Settings Sync** – carry your playback preferences across devices 45 46## 📦 Prerequisites 47 48- Node.js (v22 or later) 49- Deno 50- Rust 51- Go 52- Turbo 53- Docker 54- Wasm Pack https://github.com/drager/wasm-pack 55- DuckDB https://duckdb.org/docs/installation `1.2.0` 56- Spotify `SPOTIFY_CLIENT_ID` and `SPOTIFY_CLIENT_SECRET` from setup in [Spotify developer dashboard](https://developer.spotify.com/documentation/web-api/tutorials/getting-started) 57 58## 🚀 Getting Started 59 601. Clone the repository: 61 ```bash 62 git clone git@tangled.sh:rocksky.app/rocksky 63 cd rocksky 64 ``` 652. Install dependencies: 66 ```bash 67 npm install -g turbo 68 bun install 69 bun run build:raichu 70 ``` 713. Set up the environment variables: 72 ```bash 73 cp apps/api/.env.example apps/api/.env 74 cp apps/web/.env.example apps/web/.env 75 cp apps/feeds/.env.example apps/feeds/.env 76 cp .env.example .env 77 # Edit the .env files to add your configurations 78 ``` 794. Start the Docker containers: 80 ```bash 81 docker compose up 82 ``` 835. Run the database migrations: 84 ```bash 85 turbo db:migrate --filter=@rocksky/api 86 ``` 876. Setup Spotify App: 88 ```bash 89 # don't forget to set SPOTIFY_ENCRYPTION_KEY and SPOTIFY_ENCRYPTION_IV environment variables 90 bun run spotify <client_id> <client_secret> 91 ``` 927. Populate database (Optional): 93 ```bash 94 bun run db:pgpull 95 ``` 96 978. Start Analytics API: 98 ```bash 99 bun run dev:analytics 100 ``` 1019. Start jetstream: 102 ```bash 103 bun run dev:jetstream 104 ``` 10510. Start musicbrainz: 106 ```bash 107 bun run mb 108 ``` 10911. Start feeds: 110 ```bash 111 bun run feeds 112 ``` 11312. Start the development server: 114 ```bash 115 turbo dev --filter=@rocksky/api --filter=@rocksky/web 116 ``` 117 118## 📚 Documentation 119[View the full documentation](https://docs.rocksky.app) 120 121## ✍️ Feedback 122This repository is the central place to collect feedback and issues related to [Rocksky](https://rocksky.app). 123 124Please [**open an issue**](https://tangled.org/@rocksky.app/rocksky/issues/new) if you want to leave feedback. Feel free to also join our [**Discord server**](https://discord.gg/EVcBy2fVa3) 125 126## 🤝 Contributing 127We would love to hear your feedback or suggestions. The best way to reach us is on [Discord](https://discord.gg/EVcBy2fVa3). 128 129We also welcome pull requests into this repo. See [CONTRIBUTING.md](CONTRIBUTING.md) for information on setting up this repo locally.