A work in progress, feature rich music organization app built for the music hoarder. Heavily under development, focused on ease of usage and start up. Feel free to check the docs or demo
|
|
- Music Library Management: Organize and browse albums, artists, and tracks
- Downloading: Download tracks and albums.
- Importing: Import music from directories with automatic fingerprinting
- Metadata Tagging: Auto-tag using MusicBrainz and Discogs APIs
- Sync with DAP: Sync library with digital audio players
- Telegram Integration: Control via Telegram bot
- Web UI: Mobile-friendly interface for all operations
- Job Management: Background processing for downloads, imports, and synced lyrics and more.
Documentation: https://soulsolid.contre.io Demo: https://soulsolid-demo.contre.io
The application can run without copying config.yaml into the container. If no config file exists, it will automatically create one with sensible defaults.
Soulsolid supports environment variables in configuration files using the !env_var tag:
telegram:
token: !env_var TELEGRAM_BOT_TOKEN
metadata:
providers:
discogs:
secret: !env_var DISCOGS_API_KEYThe application will fail to start if a referenced environment variable is not set.
# Build the image
podman build -t soulsolid .
# Run with environment variables
podman run -d \
--name soulsolid \
-p 3535:3535 \
-v /host/music:/app/library \
-v /host/downloads:/app/downloads \
-v /host/logs:/app/logs \ # optional
-v /host/library.db:/data/library.db \
-v /host/config.yaml:/config/config.yaml \
soulsolidOptionally, to hide secrets, you can !env_var syntax in anywhere in you config.yaml:
telegram:
token: !env_var TELEGRAM_BOT_TOKEN
metadata:
providers:
discogs:
secret: !env_var DISCOGS_API_KEYThe web interface will be available at http://localhost:3535.
To set up the development environment:
cp config.example.yaml config.yaml
npm run dev
go run ./src/main.goIf you have Nix installed, use the provided dev.nix shell:
# Set up all dependencies (Node.js, Go, etc.) and run the necessary commands
nix-shell dev.nix
# Then, simply run:
go run ./src/main.goThe web interface will be available at http://localhost:3535.


