Contributing
We welcome contributions of all kinds — bug reports, documentation improvements, new features, and performance work.
Code of conduct
Please read our Code of Conduct before participating. Be kind and constructive.
Before you start
- Search existing issues to avoid duplicates.
- For large features, open an issue first to discuss the approach before writing code.
- For documentation-only changes, you can skip the issue step and go straight to a PR.
Development setup
See Installation to get a fully working local dev environment.
Branching
Branch from main:
git checkout main
git pull
git checkout -b feat/your-feature-name
# or
git checkout -b fix/issue-123-short-descriptionCommit conventions
This project uses Conventional Commits.
<type>(<scope>): <description>
[optional body]
[optional footer]
Types
| Type | When to use |
|---|---|
feat | New feature |
fix | Bug fix |
docs | Documentation only |
refactor | Code change that isn't a fix or feature |
test | Adding or fixing tests |
chore | Build scripts, dependency updates, CI changes |
perf | Performance improvement |
Scopes (optional but helpful)
viewer,hooks,core— for package changesapp,platform— for the platform appdocs— for documentationterraform,ci— for ops changes
Examples
feat(viewer): add auto-rotate pause on user interaction
fix(hooks): resolve glTF bundle parsing for nested directories
docs: add publishing and embedding guide
chore(ci): update staging deploy workflow timeout
Running tests
# All affected tests
pnpm nx affected --target=test
# Single project
pnpm nx test vctrl/viewer
pnpm nx test vectreal-platform
# Linting
pnpm nx affected --target=lintPull requests
- Keep PRs focused — one feature or fix per PR.
- Write a clear PR description explaining the what and why.
- Link the relevant issue with
Closes #123in the description. - Ensure
lintandtestpass before requesting review. - Update documentation if you change any public API, route, or env variable.
Editing documentation
Every docs page on this site is an MDX file in the repository. Click Edit on GitHub at the top of any page to jump to the source file.
To add a new docs page:
- Create the MDX file in
apps/vectreal-platform/app/routes/docs/. - Add an entry to
apps/vectreal-platform/app/lib/docs/docs-manifest.ts. - Register the route in
apps/vectreal-platform/app/routes.tsx.
Releasing packages
Package versions are managed with Nx Release. Maintainers handle releases — contributors don't need to worry about versioning.
Getting help
- Discord —
#contributorschannel for development questions - GitHub Discussions — for design proposals and broader questions
- GitHub Issues — for bugs and concrete feature requests
Related docs
- Package Reference — verify public API docs when changing package surfaces
- Installation — contributor onboarding baseline
- Deployment — infra/runtime context for platform changes