# Contributing ## Prerequisites - Python 3.11+ - Node.js 20+ (for frontend bundle) - Git ## Development Setup ```bash git clone https://git.dolgolyov-family.by/alexei.dolgolyov/wled-screen-controller-mixed.git cd wled-screen-controller-mixed/server # Python environment python -m venv venv source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows pip install -e ".[dev]" # Frontend dependencies npm install npm run build ``` ## Running the Server ```bash cd server export PYTHONPATH=$(pwd)/src # Linux/Mac # set PYTHONPATH=%CD%\src # Windows python -m wled_controller.main ``` Open http://localhost:8080 to access the dashboard. ## Running Tests ```bash cd server pytest ``` Tests use pytest with pytest-asyncio. Coverage reports are generated automatically. ## Code Style This project uses **black** for formatting and **ruff** for linting (both configured in `pyproject.toml` with a line length of 100). ```bash cd server black src/ tests/ ruff check src/ tests/ ``` ## Frontend Changes After modifying any file under `server/src/wled_controller/static/js/` or `static/css/`, rebuild the bundle: ```bash cd server npm run build ``` The browser loads the esbuild bundle (`static/dist/`), not the source files directly. ## Commit Messages Follow the [Conventional Commits](https://www.conventionalcommits.org/) format: ``` feat: add new capture engine fix: correct LED color mapping refactor: extract filter pipeline docs: update API reference test: add audio source tests chore: update dependencies ``` ## Pull Requests 1. Create a feature branch from `master` 2. Make your changes with tests 3. Ensure `ruff check` and `pytest` pass 4. Open a PR with a clear description of the change