Contributing
Customer Portal is intended to grow through collaboration. Contributions do not need to begin with a large module: a clearer guide, a failing test, a reproducible issue, or a focused accessibility improvement can be the most useful first change.
Ways to contribute
- Report a reproducible bug or confusing workflow.
- Improve documentation, examples, diagrams, and terminology.
- Add tests around authorization, tenancy, or feature boundaries.
- Improve accessibility, responsive behavior, or translations.
- Fix or extend an existing layer.
- Propose a reusable business capability as a new feature layer.
Before opening code
- Search existing issues and pull requests, then choose the matching structured issue form.
- Describe the user problem and the affected layer.
- For a substantial feature, discuss the boundary before building it. A good layer owns one coherent business capability.
- Keep the first pull request reviewable; separate infrastructure changes from product behavior when possible.
Local checks
Run the checks that match your change and, before requesting review, run the full project suite:
pnpm test:features
pnpm lint
pnpm typecheck
pnpm build
Database changes also require a generated migration that has been reviewed and applied to a disposable PostgreSQL database.
Review principles
Contributions are easier to merge when they:
- preserve the headless core boundary;
- scope every tenant-owned query to the active organization;
- include English and Dutch keys together;
- use explicit request, persistence, and response types;
- document behavior and tradeoffs, not only implementation;
- avoid coupling the host application to a feature.
Have an idea for a reusable capability? Read module proposal guidance, then open the reusable layer proposal form. When the boundary is agreed, continue with create a feature layer, distribute the layer, and testing contributions. Documentation-only changes have a separate writing guide. Use Community and support to choose the right channel and report security concerns privately.