Getting started
Configure
Development workflow
| Service | How to iterate |
|---|---|
dashboard | cd apps/dashboard && npm install && npm run dev |
status-api | Edit apps/status-api/server.py, then docker compose restart status-api |
analytics | Edit services/analytics/tracker.py, then docker compose restart analytics |
liquidsoap | Edit services/streaming/liquidsoap/radio.liq, then docker compose restart liquidsoap |
nginx | Edit infrastructure/nginx/nginx.conf, then docker compose restart nginx |
Code style
- Python —
ruff check services/analytics/ apps/status-api/(config inpyproject.toml) - TypeScript —
npm run lintinsideapps/dashboard/ - Shell —
set -e, 4-space indent, double-quoted variables - Dockerfiles — must pass
hadolint
Commit messages
Use Conventional Commits. Valid types:feat, fix, chore, docs, refactor, test, ci, style, perf.
Examples:
Submitting a pull request
- Create a branch from
main(git checkout -b feat/my-feature) - Keep each PR focused on a single feature or fix
- Run linters locally before pushing
- Fill in the pull request template completely
- Reference any related issue with
Closes #123 - Expect a maintainer review within a few business days; address feedback with additional commits (do not force-push after review starts)
Adding environment variables
If your change introduces new environment variables:- Add them to
.env.examplewith a sensible default or blank value - Document them in the configuration table in
README.md
Reporting bugs
Use the Bug report issue template on GitHub. Include your OS, Docker version, and relevant logs:Communication
- GitHub Issues — bug reports and feature requests
- GitHub Discussions — questions and design conversations
- Slack — join the Sonicverse OSS Slack for real-time discussion