8f10353f0c
CI / lint (push) Has been cancelled
CI / js-syntax (push) Successful in 10m24s
CI / deps-audit (push) Has been cancelled
CI / test (push) Failing after 24m55s
CI / sast-bandit (push) Failing after 11m13s
CI / trivy (push) Failing after 9m32s
Docker Publish / build-and-push (push) Failing after 34m3s
83 lines
3.2 KiB
Markdown
83 lines
3.2 KiB
Markdown
# Contributing to StemDeck
|
|
|
|
Thanks for your interest in StemDeck - free, local stem separation for musicians. Contributions of
|
|
all kinds are welcome, whether you write code or not.
|
|
|
|
By participating you agree to follow our [Code of Conduct](CODE_OF_CONDUCT.md).
|
|
|
|
## Ways to contribute
|
|
|
|
- **Report a bug** - open a [Bug report](https://github.com/stemdeckapp/stemdeck/issues/new/choose).
|
|
Include your OS, the StemDeck version (Help icon -> About), and clear steps to reproduce.
|
|
- **Suggest a feature** - open a [Feature request](https://github.com/stemdeckapp/stemdeck/issues/new/choose).
|
|
- **Improve the docs** - fixes and clarifications to the README or these guides are always useful.
|
|
- **Write code** - bug fixes and features. For anything large, please open an issue or a
|
|
[Discussion](https://github.com/stemdeckapp/stemdeck/discussions) first so we can agree on the
|
|
approach before you invest time.
|
|
- **Found a security issue?** Do not open a public issue - see [SECURITY.md](SECURITY.md).
|
|
|
|
## Project layout
|
|
|
|
- `app/` - FastAPI backend (the audio pipeline, job registry, and HTTP API).
|
|
- `static/` - the web UI: plain ES-module JavaScript, HTML, and CSS. No build step, no bundler.
|
|
- `desktop/` - the Tauri v2 desktop shell (Rust) that wraps the backend + UI.
|
|
- `scripts/` - packaging scripts (macOS app/dmg, Windows portable, runtime pack).
|
|
- `tests/` - the pytest suite for the backend.
|
|
|
|
## Development setup
|
|
|
|
You need [`uv`](https://docs.astral.sh/uv/) and `ffmpeg` on your PATH.
|
|
|
|
```bash
|
|
uv sync --python 3.12 # install the Python environment
|
|
./run.sh start # start the backend at http://localhost:8000
|
|
```
|
|
|
|
Other helpers:
|
|
|
|
```bash
|
|
./run.sh restart # restart after backend changes
|
|
./run.sh stop # stop the server
|
|
./run.sh status # is it running?
|
|
```
|
|
|
|
Open `http://localhost:8000` in your browser to use the app. Frontend changes are picked up on
|
|
reload (no build step).
|
|
|
|
## Before you open a pull request
|
|
|
|
Please run the same checks CI runs:
|
|
|
|
```bash
|
|
uv run ruff check app/ tests/ # lint
|
|
uv run ruff format --check app/ tests/ # formatting
|
|
node --check static/js/<changed>.js # syntax-check any JS you touched
|
|
uv run pytest tests/ -q # backend tests
|
|
```
|
|
|
|
For Rust changes in `desktop/`, also run `cargo fmt --check` and `cargo clippy -- -D warnings`.
|
|
|
|
## Pull request guidelines
|
|
|
|
- Branch off `main`.
|
|
- Use [Conventional Commits](https://www.conventionalcommits.org/) for messages
|
|
(`feat:`, `fix:`, `docs:`, `refactor:`, `test:`, `chore:`, `ci:`).
|
|
- Open the PR as a **draft** until it is ready for review.
|
|
- Keep PRs focused - one logical change per PR makes review faster.
|
|
- Describe what changed and why, and how you tested it.
|
|
|
|
## Tests
|
|
|
|
New API endpoints and pipeline stages should come with tests under `tests/`. The suite uses
|
|
`pytest` with `httpx.AsyncClient`; see the existing `tests/test_*.py` files for patterns.
|
|
|
|
## License
|
|
|
|
StemDeck is licensed under the [Apache License 2.0](LICENSE). By contributing, you agree that your
|
|
contributions are licensed under the same terms.
|
|
|
|
## Questions
|
|
|
|
Open a [Discussion](https://github.com/stemdeckapp/stemdeck/discussions) or join the
|
|
[Discord](https://discord.gg/2MVsWqaPRe). Thanks for helping make StemDeck better.
|