Thanks for your interest in contributing! We welcome all kinds of contributions — bug fixes, new features, documentation, and ideas.
- Bun 1.3+ and Node.js 20.9+
git clone https://github.com/pascalorg/editor.git
cd editor
bun install
bun devThe editor will be running at http://localhost:3002. That's it!
Copy .env.example to .env and add a Google Maps API key if you want address search functionality. The editor works fully without it.
We use Biome for linting and formatting. Before submitting a PR:
bun check # Check for issues
bun check:fix # Auto-fix issuesRun the whole suite from the repo root:
bun run test # every package, via TurborepoRun one package while you work on it:
bun --cwd packages/core run testUse bun run test, not bare bun test. test is one of Bun's own
subcommands, so bun test never reaches the package script — it runs Bun's
collector over every file it can find, including compiled copies under dist/,
and reports inflated counts. bun run test goes through Turborepo, which
builds workspace dependencies first (several packages import theirs from
dist/) and runs each package's own scoped test script.
| Package | What it does |
|---|---|
packages/core |
Scene schema, state management, systems — no UI |
packages/viewer |
3D rendering with React Three Fiber |
apps/editor |
The full editor app (Next.js) |
A key rule: packages/viewer must never import from apps/editor. The viewer is a standalone component; editor-specific behavior is injected via props/children.
New node kinds and sidebar panels can ship as a plugin instead of editing the built-ins. Read Create a plugin for the contract, and clone pascalorg/plugin-trees as a worked example.
- Fork the repo and create a branch from
main - Make your changes and test locally with
bun dev - Run
bun checkandbun run testto make sure linting and tests pass - Open a PR with a clear description of what changed and why
- Link related issues if applicable (e.g., "Fixes #42")
- Keep PRs focused — one feature or fix per PR
- Include screenshots or recordings for visual changes
- If you're unsure about an approach, open an issue or discussion first
Use the Bug Report template. Include steps to reproduce — this helps us fix things faster.
Use the Feature Request template, or start a Discussion if you want to brainstorm first.
Head to Discussions — we're happy to help!