Ctrl K
ComunidadGuías…

CONTRIBUTING.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Feedback for Nodvard Deck

Thanks for your interest in Nodvard Deck! Bug reports, ideas and hints about the documentation are
very welcome.

## How to help

- **Bugs:** open an issue using the *Bug report* template. Include your Nodvard Deck version,
  how you run it (Docker on Pi / x86) and the steps to reproduce.
- **Ideas and features:** open an issue using the *Feature request* template.
- **Documentation:** if something is unclear or wrong, open an issue and say where.
- **Questions and chat:** the [Discord](https://discord.gg/gTTs7qMabt) has a help forum (mostly German, English is
  welcome in #english).
- **Security issues:** never in public issues or on Discord — see [SECURITY.md](SECURITY.md).

## Code contributions

Nodvard Deck is developed by its maintainer alone and **does not accept code contributions**
(pull requests or patches) from outside. This keeps the licensing simple: all code comes from one
author and is licensed under the PolyForm Noncommercial License. Please
describe problems and proposed fixes in words in an issue instead of sending code; pull requests
will be closed without review.

You are welcome to build and adapt Nodvard Deck for your own noncommercial use under the terms of
the [LICENSE](LICENSE). The sections below help with that.

## Development setup

See the *Development* section of the [README](README.en.md). In short:

```bash
python -m venv .venv
.venv/bin/pip install -c deploy/constraints.txt -e sdk/python -e "backend[dev]"
git config core.hooksPath .githooks   # pre-commit hook: rebuilds changed extension frontends
cd frontend && npm ci
```

## Checks for your own changes

If you change the code for yourself, these checks show whether everything still works:

```bash
.venv/bin/pytest sdk/python/tests backend/tests
python scripts/check_core_purity.py
node scripts/build_extension_frontends.mjs --check
cd frontend
npm run typecheck && npm run typecheck:extensions
npm test && npm run test:extensions
```

## How the code is organized

- **The core stays vendor-neutral.** Anything specific to one product (Proxmox, Docker,
  Pi-hole, …) belongs in an extension under `extensions/`. `scripts/check_core_purity.py`
  enforces this.
- **Extensions only talk to the core through `nodvard_sdk`.** See
  [docs/en/EXTENSION-API.md](docs/en/EXTENSION-API.md).
- **Changes to managed systems go through the gate.** Actions that modify a server, VM or
  container are proposed and approved — never executed silently.
- **Database changes need an Alembic migration.**
- **Extension frontends are bundled.** After changing an extension's frontend, rebuild with
  `node scripts/build_extension_frontends.mjs`.
- **Dependencies need a permissive license.** Allowed: MIT, BSD, Apache-2.0, ISC, PSF,
  MPL-2.0 (unmodified). A few reviewed exceptions, such as EPL-2.0 for `asyncssh` (used
  unmodified), are listed with their reasons in `scripts/check_licenses.py`. GPL, AGPL, LGPL,
  SSPL or unknown licenses are rejected by the license check. Bundled licenses are listed in
  `THIRD_PARTY_LICENSES`.
- **No secrets or personal data** in code, tests or fixtures. Use example values such as
  `192.168.1.10`, `admin` and `example.com`.

## Code of conduct

Please be respectful. See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).