Files
2025-08-31 19:18:34 +10:00

85 lines
2.7 KiB
Markdown

# 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
```bash
# 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
```bash
# 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
```bash
# 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