Contributing
Qalma uses pnpm, Nx, Angular 21, Analog for the docs app, and a headless
editor library in libs/editor.
Repository layout
| Path | Purpose |
|---|---|
libs/editor |
Public @qalma/editor package and first-party plugins. |
apps/docs |
Documentation site and live playground. |
apps/sandbox |
Consumer-style demo app for editor behavior. |
apps/docs/src/content/docs |
Markdown docs pages. |
apps/docs/src/app/docs/docs-nav.ts |
Docs sidenav entries. |
Local commands
pnpm install
pnpm nx serve docs
pnpm nx serve sandbox
pnpm nx build docs
pnpm nx build sandbox
Documentation workflow
When documenting a plugin or public capability:
- Read the implementation in
libs/editor/src/lib/pluginsorlibs/editor/src/lib/editor. - Check the public exports in
libs/editor/src/index.ts. - Update or create the markdown page in
apps/docs/src/content/docs. - Keep snippets importing from
@qalma/editor, not internal paths. - Keep UI examples consumer-owned. Toolbar buttons, popovers, menus, uploads, and design-system components belong in the app.
- If the sidenav changes, update
apps/docs/src/app/docs/docs-nav.ts.
Editor contribution rules
First-party plugins should expose Qalma-owned options, immutable defaults, and validation. Preserve unique plugin keys, schema names, command names, query names, and shortcuts.
Do not bake product styling or fixed toolbar UI into libs/editor. The library
should stay headless.
Validation
Run the checks that match your change. For docs-only changes, start with:
pnpm exec tsc -p apps/docs/tsconfig.json --noEmit
pnpm nx build docs
For editor or sandbox behavior changes, expand to:
pnpm exec tsc -p libs/editor/tsconfig.lib.json --noEmit
pnpm exec tsc -p apps/sandbox/tsconfig.json --noEmit
pnpm nx build sandbox
For user-visible editor behavior, verify the sandbox or docs playground in a real browser.
For the full testing map, including first-party plugin specs, Playwright coverage, and protected test-change review, see Testing Strategy.