Music App
Self-hosted music streaming application with mood radio, lofi channels, SharePlay, and internet radio.
Quick Start
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
- Debian/Ubuntu:
Configuration
Copy .env.example to .env and set your values:
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 filesDATABASE_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 cliente2e/— Playwright end-to-end specsdocs/— Implementation plan
Tests
Backend (pytest, 90%+ coverage gate):
cd backend
pip install -r requirements.txt pytest-cov
pytest
300 tests covering endpoints, routers, services, schemas, and models.
E2E (Playwright):
npm install
npx playwright install
npm run dev:backend & # start backend on :8000
npx playwright test
TypeScript (web + mobile + shared workspaces):
npm install
npm run typecheck
npm run lint
Development
npm workspaces scripts at the repo root:
npm run dev # web + backend together
npm run dev:web # Vite dev server only
npm run build:web # production web build
License
MIT — see LICENSE.
Description
Self-hosted music streaming with mood radio, lofi channels, SharePlay, and internet radio — FastAPI, React web, React Native mobile.
Languages
Python
53.7%
TypeScript
44.9%
CSS
0.5%
JavaScript
0.5%
HTML
0.2%
Other
0.2%