Thank you for your interest in contributing. This project is maintained by Development Gateway and welcomes contributions from the community.
This is a pnpm monorepo containing two published packages:
@devgateway/dvz-ui-react— embeddable React components for data visualization@devgateway/wp-react-lib— WordPress REST API integration for React
- Development Setup
- Branching Model
- Making Changes
- Commit Messages
- Code Style
- Opening a Pull Request
- Adding a New Embeddable Component
- License
- Security
- Node.js v22+
- pnpm v10+
- Docker (only needed to run the WordPress example locally)
git clone --recurse-submodules git@github.com:devgateway/data-viz-ui.git
cd data-viz-ui
pnpm installpnpm devcd example && pnpm devpnpm --filter @devgateway/* typecheckmainis the stable branch and the base for all pull requests.- Create a branch off
mainfor every change, using a prefix that matches the Conventional Commits type:feat/short-descriptionfix/short-descriptionchore/short-descriptiondocs/short-descriptionrefactor/short-descriptionci/short-description
- For long-running project integrations use
project/short-description(see below). - Do not push directly to
main.
Projects that contribute work incrementally over time can maintain a project/ branch and merge into main via PR when ready. Use a generic description with no client name or internal identifier — e.g. project/multilingual-posts, project/superset-embedded-charts. All commits on a project/ branch must follow the same conventions as any other branch. Only generic, reusable code belongs here — client-specific customisations must stay in the project's own private repository.
Every PR that changes a published package must include a changeset:
pnpm changesetSelect the affected packages, choose the bump type (major / minor / patch), and write a one-line description for the changelog. Commit the generated file alongside your changes.
| Change type | Bump |
|---|---|
| Breaking API change | major |
| New component or feature | minor |
| Bug fix, refactor, dependency update | patch |
Changes to example/ only do not need a changeset (it is excluded from releases).
This project follows Conventional Commits. Use a prefix that reflects the nature of the change:
| Prefix | When to use |
|---|---|
feat: |
New component, hook, or user-facing feature |
fix: |
Bug fix |
chore: |
Dependency update, tooling, config |
docs: |
Documentation only |
refactor: |
Code restructure with no behaviour change |
ci: |
CI/CD workflow changes |
For breaking changes append ! to the prefix, and add a BREAKING CHANGE: footer in the commit body:
feat(dvz-ui)!: rename Chart data prop
BREAKING CHANGE: the `data` prop on Chart has been renamed to `dataset`
Examples:
feat(dvz-ui): add sankey chart component
fix(wp-react-lib): correct SSR window guard in usePost
chore: upgrade react-router to 7.9.4
ci: exclude example from test-pr workflow
- TypeScript for all new source files in
dvz-ui - ESLint is configured — run
pnpm --filter @devgateway/dvz-ui-react typecheckbefore pushing - No inline comments unless the reason is non-obvious
- Keep components focused; avoid adding features beyond what the PR describes
Forking is not enabled on this repository. To contribute, request access from a maintainer, then create a branch directly in this repo off main.
- Create a branch off
main(see Branching Model) - Make your changes and add a changeset (see above)
- Ensure
pnpm buildpasses locally — CI runs the same check - Open a PR against
mainwith a clear description of what changed and why - At least one maintainer approval is required before merging
- All CI checks must pass
CI will build the packages and publish a preview install link via pkg-pr-new so you can test your changes before merge.
Do not introduce hardcoded credentials, internal URLs, client-specific identifiers, or PII. Ensure any new dependency has an Apache-2.0-compatible license.
New components live under packages/dvz-ui/src/embeddable/<component-name>/. Export the component from packages/dvz-ui/src/index.ts and register it in the component map if it should be auto-discoverable by name.
By contributing you agree that your contributions are licensed under the Apache License 2.0.
Please do not report security vulnerabilities through public GitHub issues. See SECURITY.md for the responsible disclosure process.