Skip to content

Curated music discovery - Find and download new music through your library and listening history

License

Notifications You must be signed in to change notification settings

jordojordo/deepcrate

Repository files navigation

DeepCrate

License CI Test Docker AI Assisted

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.

deepcrate-demo.mp4

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
flowchart LR
    A[Your Library] --> B[Discovery]
    C[Scrobbles] --> B
    B --> D{Preview & Approve}
    D -->|Approved| E[Soulseek]
    E --> A
Loading

Quick Start

Prerequisites

1. Create configuration

mkdir -p deepcrate/data && cd deepcrate

Create config.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 for all options.

2. Run with Docker Compose

Create docker-compose.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
docker compose up -d

3. Access the UI

Open http://localhost:8080 and log in with your configured credentials.

Documentation

Configuration | API | Architecture | Comparison | Authelia Integration

Development

git clone https://github.com/jordojordo/deepcrate.git && cd deepcrate
pnpm install && pnpm dev  # Starts on http://localhost:5173

See 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. If you need to monitor known artists for new releases, Lidarr is the standard. See Comparison for a detailed breakdown.

Related Projects

License

Apache License 2.0 — See LICENSE for details.

Acknowledgments

Built with ListenBrainz, MusicBrainz, Last.fm, and slskd.

About

Curated music discovery - Find and download new music through your library and listening history

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •