This guide covers local setup, contribution expectations, and review requirements for the open-source repository.
- Read the project overview in README.md
- Use the issue templates for bugs and feature requests
- Keep pull requests focused; avoid mixing refactors, docs, and feature work in one PR unless they are tightly coupled
Requirements:
- Node.js
>=20.10.0 - pnpm
>=9 - Git
Install and start the workspace:
pnpm install
pnpm build:widgets
pnpm devThis is enough for frontend-only work.
If your change requires the backend service:
pnpm dev:appDocs site:
pnpm docs:devpnpm typecheck
pnpm lint
pnpm test
pnpm buildUse the narrowest command that proves your change.
Typical contribution areas in this repository:
- Studio editor
- Embed runtime and host integration
- Data source adapters and bindings
- Widget SDK and
vis-cli - Built-in widgets
- Documentation
- Shared data contracts belong in
@thingsvis/schema - Kernel logic stays in
@thingsvis/kernel - UI-specific behavior stays out of the kernel
The current widget authoring path is:
- scaffold with
pnpm vis-cli create <category> <name> - define props in
schema.ts - define controls in
controls.ts - implement runtime behavior with
defineWidget
Do not introduce or document legacy widget entry patterns as the primary path.
Update docs when you change:
- embed message behavior
- CLI commands or generated structure
- widget authoring APIs
- user-visible Studio flows
- Keep changes targeted
- Avoid unrelated formatting churn
- Do not rewrite adjacent files unless the change requires it
- Create a topic branch from the branch requested by maintainers
- Use Conventional Commits for commit messages and PR titles
Examples:
feat(studio): add datasource timeout help textfix(embed): normalize viewer ready handshakedocs(readme): simplify open source quick start
Before opening a PR:
- run the relevant checks for your change
- remove debug-only code
- update docs for user-facing changes
- include screenshots or recordings for UI, embed, or docs UX changes when helpful
PRs should include:
- what changed
- why it changed
- affected areas, such as
studio,embed,datasource,widget-sdk,cli, ordocs - validation notes
A good bug report includes:
- a minimal reproduction
- expected behavior
- actual behavior
- environment details
- whether the issue happens in standalone mode, embed mode, or both
Do not report security issues in public issues. Follow SECURITY.md.
Be respectful, direct, and constructive. By participating, you agree to follow CODE_OF_CONDUCT.md.