Beatstream is an app for streaming music from your computer or server to anywhere with a modern Web browser!
Requirements: Docker
docker run -d -p 8080:8080 \
-v /path/to/your/music:/music \
-v /path/to/your/data:/data \
-e DATA_PATH=/data \
darep/beatstream:latestOpen http://0.0.0.0:8080 on your browser. Log in and wait when indexing ends, refresh page and happy listening!
Note: We suggest the DATA_PATH to make sure your data is persisted, but you can also start the Beatstream docker image without it.
To enable per-user Last.fm connections, create a Last.fm API application and pass its credentials to Beatstream:
docker run -d -p 8080:8080 -v /path/to/your/music:/music \
-e LASTFM_API_KEY=your-key -e LASTFM_API_SECRET=your-secret \
darep/beatstream:latestEach Beatstream user can then connect and disconnect their own Last.fm account from Settings.
Requirements: Go 1.26 or newer. Node.js 20 or newer. TagLib (C bindings) e.g. libtagc
git clone https://github.com/Darep/Beatstream
cd frontend
npm install
npm run build
cd ..
go run .Open http://0.0.0.0:8080 on your browser. Log in and wait when indexing ends, refresh page and happy listening!
Copy base env vars and modify as you see fit:
cp .env.example .envStart the Beatstream app:
go run .Start the frontend development server:
cd frontend
npm install
npm run devDevelopment with docker:
cp .env.example .env
docker compose upThe Playwright test builds the production Docker image, starts it with a generated audio fixture, and exercises login, library indexing, streaming, playback controls, search, and logout in headless Chromium. Docker must be running.
cd frontend
npm ci
npm run test:e2e:install
npm run test:e2eFailed runs keep a screenshot, browser trace, and application logs in frontend/test-results. The same test runs on
every push and pull request to master.
Before committing changes, run:
make format
make checkmake check verifies Go formatting, vet, tests, development and production builds, frontend formatting and build,
and the Docker Compose image. GitHub Actions runs the same command on every push and pull request to master.
Releases follow Semantic Versioning and are published from GitHub Releases.
- Update
CHANGELOG.md: move items fromUnreleasedinto a new versioned section. - Go to https://github.com/Darep/Beatstream/releases/new and publish a new release.
- The GitHub action workflow will publish the new version to Docker Hub.
