82 lines
1.7 KiB
Markdown
82 lines
1.7 KiB
Markdown
# Kickback
|
|
|
|
Unified web application for music library management using SvelteKit and beets.
|
|
|
|
## Development Setup
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 24+
|
|
- Python 3.11+
|
|
- pnpm
|
|
- uv (Python package manager)
|
|
|
|
### Installation
|
|
|
|
1. Install dependencies:
|
|
|
|
```bash
|
|
pnpm install
|
|
uv pip install -r requirements.txt
|
|
```
|
|
|
|
2. Start development server:
|
|
|
|
```bash
|
|
pnpm dev
|
|
```
|
|
|
|
The app will be available at http://localhost:5173
|
|
|
|
## Beets Integration
|
|
|
|
The application uses beets for music library management. All beets commands are called via `src/lib/beets.ts` helper functions.
|
|
|
|
### Local Development
|
|
|
|
Beets is installed locally via `uv`. The CLI is available for use in SvelteKit actions.
|
|
|
|
### Production Build
|
|
|
|
```bash
|
|
# Build Docker image
|
|
pnpm docker:build
|
|
|
|
# Start container
|
|
pnpm docker:run
|
|
```
|
|
|
|
The unified container runs both SvelteKit and beets with data persisted to `.data/` and `.appdata/`.
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
kickback/
|
|
├── src/ # SvelteKit application source
|
|
│ └── lib/
|
|
│ └── beets.ts # Beets CLI helpers
|
|
├── config/
|
|
│ └── beets.yaml # Beets configuration
|
|
├── .data/ # Music library (gitignored)
|
|
├── .appdata/ # Beets state (gitignored)
|
|
└── docker-compose.yml
|
|
```
|
|
|
|
## Docker
|
|
|
|
The production Docker image packages:
|
|
|
|
- Python 3.11 with beets installed via uv
|
|
- Node 24 with SvelteKit application
|
|
- Beets configuration and data volume mounts
|
|
|
|
## Commands
|
|
|
|
- `pnpm dev` - Start dev server
|
|
- `pnpm build` - Build for production
|
|
- `pnpm test` - Run tests
|
|
- `pnpm lint` - Lint code
|
|
- `pnpm format` - Format code
|
|
- `pnpm docker:build` - Build Docker image
|
|
- `pnpm docker:run` - Run Docker container via docker-compose
|