feat: compact UI with theme switcher (light/dark/mono)

- Redesign download cards to be significantly more compact
- Add CSS custom properties for theming
- Add theme switcher (Light, Dark, Mono) with localStorage persistence
- Update README with environment variable Docker deployment docs
- Update Docker Compose example to use environment: instead of volume mount
This commit is contained in:
2026-05-15 17:28:48 +01:00
parent db89a920e4
commit 6140808efb
4 changed files with 468 additions and 216 deletions

View File

@@ -92,6 +92,25 @@ docker run -d \
3. **Access the dashboard** at `http://your-server:3001`
### Using Environment Variables (Alternative to .env file)
All configuration can be passed directly as environment variables instead of mounting a `.env` file. This is the preferred approach for orchestrated deployments (Docker Compose, Kubernetes, Portainer, etc).
```bash
docker run -d \
--name sofarr \
--restart unless-stopped \
-p 3001:3001 \
-e EMBY_URL=http://emby.local:8096 \
-e EMBY_API_KEY=your-emby-api-key \
-e SONARR_INSTANCES='[{"name":"main","url":"http://sonarr:8989","apiKey":"your-key"}]' \
-e RADARR_INSTANCES='[{"name":"main","url":"http://radarr:7878","apiKey":"your-key"}]' \
-e SABNZBD_INSTANCES='[{"name":"main","url":"http://sabnzbd:8080","apiKey":"your-key"}]' \
-e QBITTORRENT_INSTANCES='[{"name":"main","url":"http://qbit:8080","username":"admin","password":"pass"}]' \
-e LOG_LEVEL=info \
docker.i3omb.com/sofarr:latest
```
### Docker Compose
```yaml
@@ -103,10 +122,18 @@ services:
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- /opt/sofarr/.env:/app/.env
environment:
- EMBY_URL=http://emby:8096
- EMBY_API_KEY=your-emby-api-key
- SONARR_INSTANCES=[{"name":"main","url":"http://sonarr:8989","apiKey":"your-key"}]
- RADARR_INSTANCES=[{"name":"main","url":"http://radarr:7878","apiKey":"your-key"}]
- SABNZBD_INSTANCES=[{"name":"main","url":"http://sabnzbd:8080","apiKey":"your-key"}]
- QBITTORRENT_INSTANCES=[{"name":"main","url":"http://qbit:8080","username":"admin","password":"pass"}]
- LOG_LEVEL=info
```
> **Tip:** You can also use a combination — mount a `.env` file for base config, and override specific values with `-e` flags. Environment variables always take precedence.
### Available Tags
| Tag | Description |