- Notifications
You must be signed in to change notification settings - Fork4.4k
chore(contributions): update local environment setup documentation#41401
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:release
Are you sure you want to change the base?
Conversation
RTS and git root storage folder setup
coderabbitaibot commentedNov 20, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
WalkthroughAdds a new Changes
Sequence Diagram(s)sequenceDiagram autonumber participant Dev as Developer participant Env as Dev Env (.env) participant RTS as RTS (Real-Time Server) participant Java as Java Server participant DB as Database Dev->>Env: set APPSMITH_GIT_ROOT, Node v20.11.1 Dev->>RTS: start RTS (per docs) RTS->>Java: coordinate realtime features / proxies Dev->>Java: start Java server (migrations/status) Java->>DB: run migrations / serve requests note right of RTS `#D6EAF8`: RTS is optional but documented for local dev flowsEstimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Tip 📝 Customizable high-level summaries are now available in beta!You can now customize how CodeRabbit generates thehigh-level summary in your pull requests — including its content, structure, tone, and formatting.
Example instruction:
Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later. Thanks for usingCodeRabbit! 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (3)
app/server/envs/dev.env.example (1)
7-8:Consider adding an inline comment for APPSMITH_GIT_ROOT.While consistent with the file's minimal comment style, a brief inline comment explaining this variable's purpose would improve developer experience without requiring them to reference ServerSetup.md.
Example:
+# Directory path where git repositories will be stored for version control features APPSMITH_GIT_ROOT=./path/to/repo/directorycontributions/ServerSetup.md (2)
286-292:Consider structural consistency with macOS section.The APPSMITH_GIT_ROOT content is identical to the macOS section (lines 159-163), but the placement and heading differ. The macOS section places this as step 8 within the build workflow, while WSL has it as a separate section before the build steps.
This inconsistency might confuse developers switching between platforms. Consider either:
- Placing this in the same workflow position for both platforms, or
- Adding a note explaining why the placement differs
337-381:LGTM! WSL RTS setup is consistent with macOS section.The RTS setup instructions are identical to the macOS section (lines 165-209), which is appropriate since the RTS setup process is platform-independent.
For future maintenance, consider consolidating the RTS setup into a shared section and referencing it from both platform-specific sections to avoid duplication. For example:
##Building and running the code...7. Running the RTS (Real-Time Server) See the[RTS Setup Guide](#rts-setup) for detailed instructions.This would reduce duplication and make updates easier, though the current approach is also acceptable.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
app/server/envs/dev.env.example(1 hunks)contributions/ClientSetup.md(2 hunks)contributions/ServerSetup.md(4 hunks)
🧰 Additional context used
🧠 Learnings (6)
📓 Common learnings
Learnt from: sharat87Repo: appsmithorg/appsmith PR: 37341File: deploy/docker/base.dockerfile:49-50Timestamp: 2024-11-12T14:29:18.087ZLearning: In the Appsmith project, avoid pinning the minor Node.js version in Dockerfiles, aligning with the Node.js engine specified in `src/client/package.json` as `^20.11.1`.📚 Learning: 2024-10-08T15:32:39.374Z
Learnt from: sharat87Repo: appsmithorg/appsmith PR: 29585File: deploy/docker/fs/opt/appsmith/caddy-reconfigure.mjs:8-8Timestamp: 2024-10-08T15:32:39.374ZLearning: The `APPSMITH_CUSTOM_DOMAIN` environment variable is not being deleted and should remain in use as per the current codebase configuration.Applied to files:
app/server/envs/dev.env.example
📚 Learning: 2024-10-08T15:32:34.115Z
Learnt from: sharat87Repo: appsmithorg/appsmith PR: 28081File: deploy/docker/fs/opt/appsmith/caddy-reconfigure.mjs:7-7Timestamp: 2024-10-08T15:32:34.115ZLearning: The `TMP` environment variable is set in the Docker image for the Appsmith project, as clarified by the user sharat87.Applied to files:
app/server/envs/dev.env.example
📚 Learning: 2024-10-07T09:13:14.613Z
Learnt from: abhvsnRepo: appsmithorg/appsmith PR: 36670File: deploy/docker/fs/opt/appsmith/entrypoint.sh:465-483Timestamp: 2024-10-07T09:13:14.613ZLearning: In the `deploy/docker/fs/opt/appsmith/entrypoint.sh` script, `APPSMITH_PG_DATABASE` is a constant with the value `appsmith`, so we can assume it remains constant and doesn't require additional quoting in SQL commands.Applied to files:
app/server/envs/dev.env.example
📚 Learning: 2024-10-25T08:31:07.651Z
Learnt from: abhvsnRepo: appsmithorg/appsmith PR: 37068File: deploy/docker/fs/opt/appsmith/pg-utils.sh:125-132Timestamp: 2024-10-25T08:31:07.651ZLearning: In `deploy/docker/fs/opt/appsmith/pg-utils.sh`, the `POSTGRES_ADMIN_USER` (`postgres`) uses trust-based authentication in the local environment, so password handling changes for local setup may not be needed.Applied to files:
app/server/envs/dev.env.example
📚 Learning: 2024-11-12T14:29:18.087Z
Learnt from: sharat87Repo: appsmithorg/appsmith PR: 37341File: deploy/docker/base.dockerfile:49-50Timestamp: 2024-11-12T14:29:18.087ZLearning: In the Appsmith project, avoid pinning the minor Node.js version in Dockerfiles, aligning with the Node.js engine specified in `src/client/package.json` as `^20.11.1`.Applied to files:
contributions/ClientSetup.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: server-spotless / spotless-check
- GitHub Check: server-unit-tests / server-unit-tests
🔇 Additional comments (5)
contributions/ClientSetup.md (1)
97-97:LGTM! Node.js version update aligns with requirements.The update to 20.11.1 is consistent with the RTS server requirements and matches the Node.js engine specification in package.json.
contributions/ServerSetup.md (4)
46-46:LGTM! Node.js version requirement clearly specified.The update to 20.11.1 with RTS context and version manager suggestions is clear and helpful.
159-163:LGTM! APPSMITH_GIT_ROOT configuration is clear.The example path and configuration instructions are appropriate for the development environment.
165-209:LGTM! RTS setup guidance is comprehensive and helpful.The "When do you need to run RTS?" section provides clear use cases, and the step-by-step instructions are well-structured. This significantly improves the developer experience.
232-232:LGTM! WSL Node.js requirement matches macOS section.Consistent version requirement across platforms.
Failed server tests
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (1)
contributions/ServerSetup.md (1)
233-233:Minor inconsistency: different status check endpoints between macOS and WSL2.macOS uses
http://localhost:8080/api/v1/users/mewhile WSL2 uses barehttp://localhost:8080. Both work, but for consistency and clarity, use the same endpoint. The WSL2 section also mentions "HTTP 401 error" which may be misleading on the bare endpoint.Consider standardizing to the
/api/v1/users/meendpoint for both platforms.Also applies to: 406-406
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
contributions/ServerSetup.md(4 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: sharat87Repo: appsmithorg/appsmith PR: 37341File: deploy/docker/base.dockerfile:49-50Timestamp: 2024-11-12T14:29:18.087ZLearning: In the Appsmith project, avoid pinning the minor Node.js version in Dockerfiles, aligning with the Node.js engine specified in `src/client/package.json` as `^20.11.1`.Learnt from: sharat87Repo: appsmithorg/appsmith PR: 29585File: deploy/docker/fs/opt/appsmith/caddy-reconfigure.mjs:8-8Timestamp: 2024-10-08T15:32:39.374ZLearning: The `APPSMITH_CUSTOM_DOMAIN` environment variable is not being deleted and should remain in use as per the current codebase configuration.Learnt from: sharat87Repo: appsmithorg/appsmith PR: 29585File: deploy/docker/fs/opt/appsmith/caddy-reconfigure.mjs:8-8Timestamp: 2024-07-26T21:12:57.228ZLearning: The `APPSMITH_CUSTOM_DOMAIN` environment variable is not being deleted and should remain in use as per the current codebase configuration.🪛 markdownlint-cli2 (0.18.1)
contributions/ServerSetup.md
183-183: Headings must start at the beginning of the line
(MD023, heading-start-left)
196-196: Headings must start at the beginning of the line
(MD023, heading-start-left)
355-355: Headings must start at the beginning of the line
(MD023, heading-start-left)
368-368: Headings must start at the beginning of the line
(MD023, heading-start-left)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: server-spotless / spotless-check
- GitHub Check: server-unit-tests / server-unit-tests
🔇 Additional comments (6)
contributions/ServerSetup.md (6)
46-46:Node.js version standardization looks good.Pinning to 20.11.1 for local development is clear and appropriate, with fallback instructions for nvm/fnm. Version guidance is consistent across macOS and WSL2 platforms.
Also applies to: 198-205, 246-246, 370-377
179-223:Clarify why RTS must start before the Java server.The documentation prescribes starting RTS (step 9) before the Java server (step 10), which is atypical. Add a brief note explaining the architectural reason—does the Java server depend on RTS being available at startup, or is this merely a recommended order for feature parity?
This helps developers understand the dependency chain and troubleshoot startup issues more effectively.
Also applies to: 224-227
53-66:Java/Maven version verification section is well-structured.The new troubleshooting section (detecting misaligned Java versions and providing remediation) is helpful for developers with multiple Java installations. Clear detection, verification, and remediation steps.
224-227:Verify step numbering consistency between macOS and WSL2 sections.The macOS section has "10. Start the Java server" while WSL2 has "8. Start the Java server". Ensure step numbers are correctly sequential and consistent across both platform sections after the RTS insertion. The renumbering due to RTS addition appears to have diverged between sections.
Please audit the full step sequence (1-10+) for both macOS and WSL2 to ensure logical progression and consistency.
Also applies to: 396-402
207-220:The RTS directory path and start-server.sh script are correctly referenced and present in the repository.All verification checks passed:
- ✓
app/client/packages/rtsdirectory exists- ✓
start-server.shscript exists and is executable- ✓
.env.examplefile is present for the environment setup step- ✓ Directory structure matches the documentation instructions
The documentation at lines 207–220 (and 379–392) accurately reflects the actual repository structure and available resources. No corrections are needed.
173-177:APPSMITH_GIT_ROOT is a recognized and properly integrated environment variable—the documentation is accurate.The variable is actively used throughout the codebase:
- Java Server: Defined in
app/server/appsmith-git/src/main/resources/application.propertiesasappsmith.git.root = ${APPSMITH_GIT_ROOT:}and injected intoGitServiceConfigvia@Valueannotation- RTS (Real-Time Server): Read in
app/client/packages/rts/src/ctl/backup/links/GitStorageLink.tsviaprocess.env.APPSMITH_GIT_ROOT- Docker Runtime: Properly handled in
deploy/docker/fs/opt/appsmith/run-with-env.shwith fallback default/appsmith-stacks/git-storage- Tests: Unit tests in
app/client/packages/rts/src/ctl/backup/backup.test.tsvalidate its behaviorThe documentation at lines 173-177 (macOS) and 302-306 (WSL2) correctly documents this variable.
| ###When do you need to run RTS? | ||
| **You need RTS if you are:** | ||
| - Running the Java server locally and working on collaborative features | ||
| - Developing or testing real-time synchronization functionality | ||
| - Testing the full editor experience with live updates between multiple users | ||
| - Working on features that depend on WebSocket communication | ||
| **You can skip RTS if you are:** | ||
| - Only making backend changes that don't involve real-time features | ||
| - Working on individual components without multi-user synchronization requirements | ||
| - Testing basic API functionality that doesn't require live updates | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Fix markdown linting violations (MD023): headings must start at line beginning.
Headings within numbered list items (lines 183, 196) are indented and trigger linting errors. Convert these to bold text or restructure to comply with markdown standards.
Apply this diff for the macOS section:
9. Running the RTS (Real-Time Server) The RTS Server enables real-time communication features in Appsmith, such as collaborative editing and live synchronization via WebSockets.- ### When do you need to run RTS?+ **When do you need to run RTS?** **You need RTS if you are:** - Running the Java server locally and working on collaborative features - Developing or testing real-time synchronization functionality - Testing the full editor experience with live updates between multiple users - Working on features that depend on WebSocket communication **You can skip RTS if you are:** - Only making backend changes that don't involve real-time features - Working on individual components without multi-user synchronization requirements - Testing basic API functionality that doesn't require live updates- ### Steps to run RTS:+ **Steps to run RTS:**
Apply the same fix to lines 355 and 368 in the WSL2 section.
Also applies to: 196-222
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
183-183: Headings must start at the beginning of the line
(MD023, heading-start-left)
🤖 Prompt for AI Agents
In contributions/ServerSetup.md around lines 183-195 (and also apply to 196-222,line 355 and line 368), headings nested inside list items are indented andtrigger MD023; convert those indented headings to plain bold text or move themto start-of-line (remove the leading list indentation) so headings begin atcolumn 0 and comply with markdown rules; for the macOS section apply the samechange (replace the indented "###" headings with bold text or unindentedheadings) and mirror the identical fixes in the WSL2 section at the specifiedlines.Failed server tests
|
Uh oh!
There was an error while loading.Please reload this page.
Updated developer documentation to standardize Node.js version requirement to 20.11.1 and added comprehensive RTS (Real-Time Server) setup instructions in ServerSetup.md for both MacOS/Linux and Windows WSL2 environments.
The changes clarify when RTS is needed (for collaborative features, real-time sync, WebSocket communication) versus optional (for basic backend changes), include step-by-step setup instructions with proper version management using nvm/fnm, and position RTS startup before the Java server to reflect the correct initialization order. Also updated environment configuration examples and git root storage folder setup documentation.
Description
Tip
Add a TL;DR when the description is longer than 500 words or extremely technical (helps the content, marketing, and DevRel team).
Please also include relevant motivation and context. List any dependencies that are required for this change. Add links to Notion, Figma or any other documents that might be relevant to the PR.
Fixes #
Issue Numberor
Fixes
Issue URLWarning
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.
Automation
/ok-to-test tags=""
🔍 Cypress test results
Warning
Tests have not run on the HEADdf74333 yet
Wed, 26 Nov 2025 23:27:48 UTC
Communication
Should the DevRel and Marketing teams inform users about this change?
Summary by CodeRabbit
Documentation
Chores
✏️ Tip: You can customize this high-level summary in your review settings.