85 lines
2.7 KiB
Markdown
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 |