Files
maple/CLAUDE.md
T
2025-08-31 19:18:34 +10:00

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

  • maple service: Runs the Rust app and sldl downloader
  • slskd service: 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 .env file
  • Required variables: SLDL_USER, SLDL_PASS for 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/album
  • data/_metadata/: Index files and metadata
  • data/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