2.7 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is "maple" - a music collection management system built in Rust that orchestrates downloading music from Soulseek using slsk-batchdl (sldl) and serving files through slskd. The project uses Docker containers to run two main services: a Soulseek downloader/organizer and a Soulseek daemon for sharing.
Architecture
The project consists of:
- Rust application (
src/main.rs): Currently minimal, likely intended for future music management logic - slsk-batchdl integration: Downloads music from Soulseek with organized file structure
- slskd daemon: Provides web interface and sharing capabilities for Soulseek
- Docker orchestration: Two containers managed via docker-compose
Key Components
mapleservice: Runs the Rust app and sldl downloaderslskdservice: Runs the Soulseek daemon with web interface on port 5030- Shared data directory structure under
data/for music files and metadata - Configuration templates in
etc/that use environment variable substitution
Common Commands
Development and Building
# Build containers
just build
# Start all services
just up
# Stop all services
just down
# Run interactive shell in maple container
just run
# Execute command in running maple container
just exec
# Download music using sldl
just dl <search_target>
Docker Operations
# Manual container operations
docker compose -f compose.yaml up --remove-orphans
docker compose -f compose.yaml down -v --remove-orphans
docker compose -f compose.yaml build
Rust Development
# Build Rust code
cargo build
# Run locally (outside container)
cargo run
Configuration
- Environment variables are loaded from
.envfile - Required variables:
SLDL_USER,SLDL_PASSfor Soulseek authentication - sldl configuration template:
etc/sldl.tpl.conf - slskd configuration template:
etc/slskd.tpl.yml
File Organization
Music files are organized as: {artist}/{album}/{track} {title} with fallback to _missing_tags/ for untagged files. The system prefers FLAC and MP3 formats with bitrate range 200-2500 kbps.
Data Structure
data/maple/: Organized music collection by artist/albumdata/_metadata/: Index files and metadatadata/slskd/: Soulseek daemon data (downloads, shared files)data/PIONEER/: DJ software settings and playlists
Current Development Status
The Rust application is in early development (currently just prints "Hello, world!"). The infrastructure for downloading and organizing music is operational through the Docker services.
- use an indentation of 4 spaces