BoilerWorks
| 6f83112… | anonymous | 1 | # Contributing |
| 6f83112… | anonymous | 2 | |
| 6f83112… | anonymous | 3 | ## Ways to contribute |
| 6f83112… | anonymous | 4 | |
| 6f83112… | anonymous | 5 | - **Add a template** — build a new stack using the [boilerworks conventions](https://github.com/ConflictHQ/boilerworks/blob/main/primers/PROCESS.md) and open a PR to add it to the catalogue |
| 6f83112… | anonymous | 6 | - **Improve docs** — fix errors, improve clarity, add examples |
| 6f83112… | anonymous | 7 | - **Report bugs** — open an issue with steps to reproduce |
| 6f83112… | anonymous | 8 | - **Request a template** — open an issue describing the stack |
| 6f83112… | anonymous | 9 | |
| 6f83112… | anonymous | 10 | ## Template conventions |
| 6f83112… | anonymous | 11 | |
| 6f83112… | anonymous | 12 | All templates must: |
| 6f83112… | anonymous | 13 | |
| 6f83112… | anonymous | 14 | - Boot with `docker compose up -d` from scratch (no local installs required) |
| 6f83112… | anonymous | 15 | - Use standard ports (app: 3000/8000, postgres: 5432, redis: 6379) |
| 6f83112… | anonymous | 16 | - Use `boilerworks` as the placeholder name throughout (the renderer replaces it) |
| 6f83112… | anonymous | 17 | - Include: Items, Categories, FormDefinitions, FormSubmissions, WorkflowDefinitions (Full only) |
| 6f83112… | anonymous | 18 | - Have health check at `/up` or `/health/` |
| 6f83112… | anonymous | 19 | - Include a `CLAUDE.md` pointing to `bootstrap.md` |
| 6f83112… | anonymous | 20 | - Pass `make test` and `make lint` |
| 6f83112… | anonymous | 21 | |
| 6f83112… | anonymous | 22 | ## CLI development |
| 6f83112… | anonymous | 23 | |
| 6f83112… | anonymous | 24 | ```bash |
| 6f83112… | anonymous | 25 | git clone https://github.com/ConflictHQ/boilerworks.git |
| 6f83112… | anonymous | 26 | cd boilerworks |
| 6f83112… | anonymous | 27 | uv sync |
| 6f83112… | anonymous | 28 | uv run boilerworks --help |
| 6f83112… | anonymous | 29 | |
| 6f83112… | anonymous | 30 | make lint # ruff check + format --check |
| 6f83112… | anonymous | 31 | make test # pytest with coverage |
| 6f83112… | anonymous | 32 | make format # ruff fix + format |
| 6f83112… | anonymous | 33 | ``` |
| 6f83112… | anonymous | 34 | |
| 6f83112… | anonymous | 35 | Coverage must stay at ≥ 80%. |
| 6f83112… | anonymous | 36 | |
| 6f83112… | anonymous | 37 | ## Adding a template to the catalogue |
| 6f83112… | anonymous | 38 | |
| 6f83112… | anonymous | 39 | 1. Build and test the template repo (must live at `ConflictHQ/boilerworks-{name}`) |
| 6f83112… | anonymous | 40 | 2. Edit `data/templates.yaml` — add an entry with `name`, `repo`, `size`, `language`, `status`, `description`, `topologies` |
| 6f83112… | anonymous | 41 | 3. Run `make test` — `test_registry.py` will catch count or schema mismatches |
| 6f83112… | anonymous | 42 | 4. Open a PR |
| 6f83112… | anonymous | 43 | |
| 6f83112… | anonymous | 44 | ## Code standards |
| 6f83112… | anonymous | 45 | |
| 6f83112… | anonymous | 46 | - Python 3.12+, fully typed |
| 6f83112… | anonymous | 47 | - Line length: 120 (ruff config in `pyproject.toml`) |
| 6f83112… | anonymous | 48 | - `ruff check . && ruff format .` before every commit |
| 6f83112… | anonymous | 49 | - No TODOs, no stubs |
| 6f83112… | anonymous | 50 | - No co-authorship messages in commits |
| 6f83112… | anonymous | 51 | |
| 6f83112… | anonymous | 52 | ## Issues and PRs |
| 6f83112… | anonymous | 53 | |
| 6f83112… | anonymous | 54 | [github.com/ConflictHQ/boilerworks/issues](https://github.com/ConflictHQ/boilerworks/issues) |