docs: add developer onboarding guide#26
Conversation
Add comprehensive onboarding documentation for new team members covering architecture, package structure, development workflow, testing, build system, state management, rendering pipeline, and CI/CD — with Mermaid diagrams.
📝 WalkthroughWalkthroughA comprehensive developer onboarding guide for Excalidraw was added, covering library vs. app structure, monorepo organization, architecture, development setup, contribution workflows, testing and build processes, state management, rendering pipeline, CI/CD checks, and common development tasks. Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@onboarding.md`:
- Around line 38-55: Update the five fenced code blocks that lack language tags
by adding the "text" language identifier to each opening fence so markdownlint
MD040 is satisfied; specifically change the fences containing the directory tree
starting with "excalidraw/", the block showing "packages/excalidraw/src/", the
block with the commit message template "<type>(<scope>): <description>", the
block listing "packages/excalidraw/tests/", and the block showing
"packages/excalidraw/dist/" to use ```text as the opening fence.
- Around line 548-556: Update the CI/CD flow text to use the repository's branch
name "main" instead of "master": change the subgraph label "On Merge to master"
to "On Merge to main" and any references to Merge target/description that
mention "master" (e.g., the subgraph title and the Merge node label) so the
diagram and onboarding text consistently reference "main".
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
| ``` | ||
| excalidraw/ | ||
| ├── packages/ # Core npm packages | ||
| │ ├── excalidraw/ # Main React library (@excalidraw/excalidraw) | ||
| │ ├── common/ # Shared utilities (@excalidraw/common) | ||
| │ ├── element/ # Element logic (@excalidraw/element) | ||
| │ ├── math/ # 2D geometry (@excalidraw/math) | ||
| │ └── utils/ # Export utilities (@excalidraw/utils) | ||
| ├── excalidraw-app/ # The web application (excalidraw.com) | ||
| ├── examples/ # Integration examples | ||
| │ ├── with-nextjs/ | ||
| │ └── with-script-in-browser/ | ||
| ├── scripts/ # Build and release scripts | ||
| ├── dev-docs/ # Developer documentation | ||
| ├── public/ # Static assets | ||
| ├── .github/workflows/ # CI/CD pipelines | ||
| └── firebase-project/ # Firebase config | ||
| ``` |
There was a problem hiding this comment.
Add language identifiers to fenced code blocks to satisfy markdownlint MD040.
The fences starting at Line 38, Line 197, Line 302, Line 327, and Line 398 are missing language tags, which currently triggers lint warnings.
🛠️ Proposed doc fix
-```
+```text
excalidraw/
...
-```
+```
-```
+```text
packages/excalidraw/src/
...
-```
+```
-```
+```text
<type>(<scope>): <description>
...
-```
+```
-```
+```text
packages/excalidraw/tests/ # Main component and integration tests
...
-```
+```
-```
+```text
packages/excalidraw/dist/
...
-```
+```Also applies to: 197-215, 302-312, 327-333, 398-403
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)
[warning] 38-38: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@onboarding.md` around lines 38 - 55, Update the five fenced code blocks that
lack language tags by adding the "text" language identifier to each opening
fence so markdownlint MD040 is satisfied; specifically change the fences
containing the directory tree starting with "excalidraw/", the block showing
"packages/excalidraw/src/", the block with the commit message template
"<type>(<scope>): <description>", the block listing
"packages/excalidraw/tests/", and the block showing "packages/excalidraw/dist/"
to use ```text as the opening fence.
| subgraph "On Merge to master" | ||
| M1["Run all tests<br/>(yarn test:app)"] | ||
| M2["Auto-publish to npm<br/>(autorelease)"] | ||
| M3["Build Docker image"] | ||
| M4["Upload Sentry sourcemaps"] | ||
| end | ||
|
|
||
| PR1 & PR2 & PR3 & PR4 & PR5 & PR6 --> Merge[Merge to master] | ||
| Merge --> M1 & M2 & M3 & M4 |
There was a problem hiding this comment.
Replace master with main in CI/CD flow text.
Line 548 and Line 555 reference master, but this repository is using main (per PR target/source). This can mislead new contributors during onboarding.
🛠️ Proposed doc fix
- subgraph "On Merge to master"
+ subgraph "On Merge to main"
@@
- PR1 & PR2 & PR3 & PR4 & PR5 & PR6 --> Merge[Merge to master]
+ PR1 & PR2 & PR3 & PR4 & PR5 & PR6 --> Merge[Merge to main]📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| subgraph "On Merge to master" | |
| M1["Run all tests<br/>(yarn test:app)"] | |
| M2["Auto-publish to npm<br/>(autorelease)"] | |
| M3["Build Docker image"] | |
| M4["Upload Sentry sourcemaps"] | |
| end | |
| PR1 & PR2 & PR3 & PR4 & PR5 & PR6 --> Merge[Merge to master] | |
| Merge --> M1 & M2 & M3 & M4 | |
| subgraph "On Merge to main" | |
| M1["Run all tests<br/>(yarn test:app)"] | |
| M2["Auto-publish to npm<br/>(autorelease)"] | |
| M3["Build Docker image"] | |
| M4["Upload Sentry sourcemaps"] | |
| end | |
| PR1 & PR2 & PR3 & PR4 & PR5 & PR6 --> Merge[Merge to main] | |
| Merge --> M1 & M2 & M3 & M4 |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@onboarding.md` around lines 548 - 556, Update the CI/CD flow text to use the
repository's branch name "main" instead of "master": change the subgraph label
"On Merge to master" to "On Merge to main" and any references to Merge
target/description that mention "master" (e.g., the subgraph title and the Merge
node label) so the diagram and onboarding text consistently reference "main".
Add comprehensive onboarding documentation for new team members covering architecture, package structure, development workflow, testing, build system, state management, rendering pipeline, and CI/CD — with Mermaid diagrams.
Summary by CodeRabbit