https://github.com/jordojordo/deepcrate
Curated music discovery - Find and download new music through your library and listening history
https://github.com/jordojordo/deepcrate
docker lastfm listenbrainz music music-discovery navidrome self-hosted slskd soulseek subsonic
Last synced: 3 months ago
JSON representation
Curated music discovery - Find and download new music through your library and listening history
- Host: GitHub
- URL: https://github.com/jordojordo/deepcrate
- Owner: jordojordo
- License: apache-2.0
- Created: 2026-01-11T11:21:02.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2026-02-15T20:27:39.000Z (4 months ago)
- Last Synced: 2026-02-16T03:05:45.114Z (4 months ago)
- Topics: docker, lastfm, listenbrainz, music, music-discovery, navidrome, self-hosted, slskd, soulseek, subsonic
- Language: TypeScript
- Homepage:
- Size: 9.46 MB
- Stars: 28
- Watchers: 1
- Forks: 2
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# DeepCrate
[](https://github.com/jordojordo/deepcrate/actions/workflows/ci.yaml)
[](https://github.com/jordojordo/deepcrate/actions/workflows/test.yaml)
[](https://ghcr.io/jordojordo/deepcrate)
**A digital record shop for your self-hosted library.** DeepCrate surfaces music through your listening history and existing collection, lets you preview and approve recommendations, then downloads via Soulseek.
https://github.com/user-attachments/assets/f7e24984-12cd-4730-beef-05eeda49364d
> [!NOTE]
> *This project was developed with AI assistance. All code is human-reviewed.*
## Features
**Discover**
- **Dual-source discovery**: ListenBrainz recommendations (listening history) + catalog similarity (library analysis via ListenBrainz/Last.fm)
**Curate**
- **30-second audio previews**: Listen before you approve (via Deezer/Spotify)
- **Approval queue**: Review recommendations with cover art and metadata before anything downloads
**Acquire**
- **Automatic Soulseek downloads**: Integrates with slskd for P2P fetching
- **Duplicate detection**: Checks existing library to avoid re-downloading
- **Single Docker container**: Everything runs in one image
```mermaid
flowchart LR
A[Your Library] --> B[Discovery]
C[Scrobbles] --> B
B --> D{Preview & Approve}
D -->|Approved| E[Soulseek]
E --> A
```
## Quick Start
### Prerequisites
- Docker and Docker Compose
- [slskd](https://github.com/slskd/slskd) running with API enabled
- Subsonic-compatible server ([Navidrome](https://www.navidrome.org/), [Gonic](https://github.com/sentriz/gonic), [Airsonic](https://airsonic.github.io/), etc.) for catalog discovery
- [ListenBrainz](https://listenbrainz.org/) account + [Last.fm API key](https://www.last.fm/api/account/create)
### 1. Create configuration
```bash
mkdir -p deepcrate/data && cd deepcrate
```
Create `config.yaml`:
```yaml
listenbrainz:
username: "your_username"
slskd:
host: "http://slskd:5030"
api_key: "your_api_key"
catalog_discovery:
enabled: true
subsonic:
host: "http://subsonic-server:4533"
username: "your_username"
password: "your_password"
lastfm:
api_key: "your_lastfm_api_key"
ui:
auth:
enabled: true
username: "admin"
password: "changeme"
```
See [examples/config.yaml](examples/config.yaml) for all options.
### 2. Run with Docker Compose
Create `docker-compose.yaml`:
```yaml
services:
deepcrate:
image: ghcr.io/jordojordo/deepcrate:latest
container_name: deepcrate
volumes:
- ./config.yaml:/config/config.yaml:rw
- ./data:/data
ports:
- "8080:8080"
restart: unless-stopped
```
```bash
docker compose up -d
```
### 3. Access the UI
Open `http://localhost:8080` and log in with your configured credentials.
## Documentation
Full documentation is available at **[jordojordo.github.io/deepcrate](https://jordojordo.github.io/deepcrate/)**.
- [Getting Started](https://jordojordo.github.io/deepcrate/guide/getting-started)
- [Configuration](https://jordojordo.github.io/deepcrate/guide/configuration)
- [Architecture](https://jordojordo.github.io/deepcrate/reference/architecture)
- [API Reference](https://jordojordo.github.io/deepcrate/reference/api) --- available as a self-hosted [Scalar](https://scalar.com/) UI at `/api/v1/docs`
- [Comparison](https://jordojordo.github.io/deepcrate/guide/comparison)
- [Authelia Integration](https://jordojordo.github.io/deepcrate/guide/authelia-integration)
## Development
```bash
git clone https://github.com/jordojordo/deepcrate.git && cd deepcrate
pnpm install && pnpm dev # Starts on http://localhost:5173
```
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
## Alternatives
DeepCrate focuses on **curated discovery**, meaning you approve what enters your library. If you prefer fully automated weekly playlists, check out [Explo](https://github.com/LumePart/Explo). If you need to monitor known artists for new releases, [Lidarr](https://lidarr.audio/) is the standard. See [Comparison](docs/comparison.md) for a detailed breakdown.
## Related Projects
- [slskd](https://github.com/slskd/slskd): Modern Soulseek client
- [Navidrome](https://www.navidrome.org/): Music streaming server
- [ListenBrainz](https://listenbrainz.org/): Open music listening data
## License
Apache License 2.0 — See [LICENSE](LICENSE) for details.
## Acknowledgments
Built with [ListenBrainz](https://listenbrainz.org/), [MusicBrainz](https://musicbrainz.org/), [Last.fm](https://www.last.fm/), and [slskd](https://github.com/slskd/slskd).