Contributing¶
Thank you for your interest in contributing to the BESSER Web Modeling Editor! This section covers everything you need: from setting up your environment to submitting a pull request.
Tip
Not sure where to start? Browse
open issues
labeled good first issue, or pick an area below.
Quick Links¶
Understanding the Codebase — Understand the code: editor, webapp, server internals
Development Workflow — Install, run, test, and submit
Adding a New Diagram Type — Add a new diagram type (editor + webapp + backend)
CONTRIBUTING.md — Repository-level policy
Where to Contribute¶
- Editor package (
packages/editor) The reusable modeling engine. Add diagram types, element renderers, palette previews, property popups, or improve the
ApollonEditorAPI.- Web application (
packages/webapp) The React SPA. Improve project management, code generation integration, deployment flows, collaboration, or the UI.
- Server (
packages/server) The Express server. Improve diagram persistence, SVG-to-PDF export, or collaboration WebSocket handling.
- Documentation (
docs/) Fix errors, expand thin pages, add tutorials, or improve the Sphinx build.
Code Style¶
Language: TypeScript (strict mode), React with functional components.
Linting: ESLint configured per package. Run before every commit:
npm run lint
Formatting: Prettier configured at root. Check with:
npm run prettier:check
Naming:
camelCasefor variables and functions,PascalCasefor components and types,UPPER_SNAKE_CASEfor constants.Commits: Use clear, descriptive messages. Prefer imperative mood (e.g., “Add state machine palette preview” not “Added…”).
Branching and PR Workflow¶
Fork the repository and clone locally.
Create a feature branch from
main(e.g.,feature/add-sequence-diagram).Make focused, incremental commits.
Run the full check suite:
npm run lint npm run test --workspace=webapp npm run build
Push and open a pull request against
main.In the PR description, explain: what changed, why, how to test.
Respond to review feedback — reviews are collaborative.
Note
The WME repository uses main as its default branch (not master).
The parent BESSER repository uses master.