# Contributing

> How to contribute to FeatherPanel, FeatherWings, FeatherQuilld, FeatherCli and these docs. Repositories, local setup, lint and test commands, pull requests.

Source: https://featherpanel.com/docs/contributing/

FeatherPanel is developed in the open by MythicalSystems and contributors. Bug reports, translations, docs fixes and
code are all welcome.

## Repositories

| Project | Repository | Stack |
|---------|------------|-------|
| Panel | [MythicalLTD/FeatherPanel](https://github.com/MythicalLTD/FeatherPanel) | PHP backend, Next.js frontend, Rust async runner, TypeScript MCP server |
| FeatherWings | [MythicalLTD/FeatherWings](https://github.com/MythicalLTD/FeatherWings) | Go |
| FeatherQuilld | [MythicalLTD/FeatherQuilld](https://github.com/MythicalLTD/FeatherQuilld) | .NET 10 |
| FeatherCli | [MythicalLTD/FeatherPanel-CLI](https://github.com/MythicalLTD/FeatherPanel-CLI) | .NET 10 |
| Website and docs | [MythicalLTD/FeatherPanel-Website](https://github.com/MythicalLTD/FeatherPanel-Website) | Astro, Tailwind, daisyUI |

## Report a bug

Open an issue in the repository of the affected component. Include the version, install method (Docker or source),
OS, the steps to reproduce and a log link from `featherpanel logs` or `featherwings diagnostics`. Report security
problems privately instead; see [Security](https://featherpanel.com/docs/security#reporting-a-vulnerability).

## Panel development

The panel repository has a `makefile` with the common tasks:

| Command | What it does |
|---------|--------------|
| `make install` | Installs frontend, backend (Composer) and MCP dependencies |
| `make lint` | Runs PHP CS Fixer and PHPCS on the backend, ESLint and Prettier on the frontend |
| `make test` | Runs the backend PHPUnit tests |
| `make frontend` | Production frontend build |
| `make runner` | Release build of the Rust async runner |

For the frontend, run `pnpm dev` in `frontendv2`. It starts Next.js on `127.0.0.1` together with the MCP server, and
proxies `/api`, `/attachments`, `/addons` and `/pma` to a backend on `localhost:8721`, the port FrankenPHP uses on a
source install. `docker-compose.v2.git.yml` builds every image from your checkout if you prefer containers.

The frontend build also runs translation and hardcoded-text scans. UI strings go in `frontendv2/public/locales/en.json`
and are referenced by key, so the build fails if you add visible text without a translation key.

## FeatherWings

```bash
make build   # build the binary
make test    # run the Go tests
make debug   # build and run with debug logging
```

## FeatherQuilld

```bash
make build      # host and sample plugins
make run        # run the daemon with CONFIG_FILE=config.yml
make configure  # interactive node setup
```

## FeatherCli

```bash
dotnet build
dotnet run -- --help
```

## Docs and website

These pages are Markdown files in `src/content/docs` of the website repository. Use the **Edit this page on GitHub** link at the
bottom of any page. Rules for docs changes:

- Check every fact against the code and list the files you used in the page's `sources` frontmatter.
- Give each page a unique `title`, `seoTitle` and `description`.
- Run `pnpm build`. It fails on any broken internal link or anchor.

## Pull requests

1. Fork the repository and create a branch from the default branch.
2. Keep one change per pull request and describe what you tested.
3. Run the lint and test commands above before you push.
4. Follow the [code of conduct](https://github.com/MythicalLTD/FeatherPanel/blob/develop/.github/CODE_OF_CONDUCT.md).
