- Add auth middleware (API key) to protect API routes (#5, #7) - Add WebSocket handlers and cleanup on disconnect (#3, #8) - Add web Dockerfile (#1) - Fix memory upload with streaming chunks (#10) - Move lofi seed to startup, remove per-request seeding (#9) - Document ffmpeg dependency in README and .env.example (#6) - Fill in mobile app with API-connected UI (#4) - Set GENIUS_API_KEY from env var with documentation (#2)
38 lines
1008 B
Markdown
38 lines
1008 B
Markdown
# Music App
|
|
|
|
Self-hosted music streaming application with mood radio, lofi channels, SharePlay, and internet radio.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
docker-compose up --build
|
|
```
|
|
|
|
## System Dependencies
|
|
|
|
- **ffmpeg** — required for audio transcoding (OGG conversion) and metadata extraction
|
|
- Debian/Ubuntu: `sudo apt-get install ffmpeg`
|
|
- macOS: `brew install ffmpeg`
|
|
- Windows: download from https://ffmpeg.org/download.html
|
|
|
|
## Configuration
|
|
|
|
Copy `.env.example` to `.env` and set your values:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Key settings:
|
|
- `API_KEY` — API key for authentication (required in production)
|
|
- `GENIUS_API_KEY` — Genius.com API key for lyrics (get at https://genius.com/api)
|
|
- `MUSIC_DIR` — path to local music files
|
|
- `DATABASE_URL` — database connection string
|
|
|
|
## Project Structure
|
|
|
|
- `backend/` — FastAPI backend (Python)
|
|
- `web/` — React web frontend (Vite + Tailwind)
|
|
- `mobile/` — React Native mobile app (Expo)
|
|
- `shared/` — Shared TypeScript types and API client
|