Conversation
|
Caution Review failedThe pull request is closed. WalkthroughA new blog post file has been added to the blog routing structure. The post, titled "The Future of Coding: Cursor AI and the Rise of Backend Automation with Appwrite," is a Markdoc article that contains front matter metadata and content discussing Cursor as an AI-assisted code editor, Appwrite as a backend automation platform, and MCP as the integration mechanism connecting them. The article outlines a unified development workflow, real-world benefits, and includes a call to action for setting up the Appwrite MCP server in Cursor. Estimated code review effort🎯 1 (Trivial) | ⏱️ ~5 minutes
Pre-merge checks and finishing touches❌ Failed checks (1 inconclusive)
✅ Passed checks (1 passed)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
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: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
static/images/blog/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/cursorappwrite_cover.pngis excluded by!**/*.png
📒 Files selected for processing (1)
src/routes/blog/post/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc(1 hunks)
⏰ 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: build
- GitHub Check: tests
🔇 Additional comments (4)
src/routes/blog/post/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc (4)
1-15: Front matter and introduction are well-structured.The metadata is complete and properly formatted. The introduction clearly frames the narrative and establishes the three-part focus (Cursor, Appwrite, MCP). Good setup for the rest of the post.
55-83: Excellent structure, flow, and clarity in practical sections.The unified workflow explanation is clear and practical. The four real-world impact categories (Speed, Reduced Complexity, Lower Barrier, Seamless Integration) are concrete and well-explained. The transition to the call-to-action is natural and compelling. The writing quality throughout is strong—good balance of technical accuracy and accessibility.
37-53: Claims about Appwrite MCP capabilities are accurate; consider noting known stability considerations.Appwrite publishes an active MCP server and documentation for using it with Cursor, and the MCP server exposes Appwrite APIs to LLM-driven IDE tools so agents can create users, manage databases, functions, and teams. The described natural-language command functionality is supported.
However, community reports document connection instability in some setups, including MCP sessions dropping after ~60s or "Client Closed" errors. For a blog post promoting this feature, consider acknowledging these known limitations or linking to troubleshooting resources in the repo for readers who encounter issues during setup.
28-35: Remove unverified extended quote; use only the verified text from Appwrite AI documentation.The quote attribution is partially inaccurate. The verified quote from Appwrite AI documentation is: "Appwrite allows you to build powerful AI powered applications with ease." The original review comment extends this with additional text not verified on the documentation page. Replace the extended quote with only the verified portion.
⛔ Skipped due to learnings
Learnt from: amustaque97 Repo: appwrite/website PR: 2434 File: deploy/templates/deployment.yaml:0-0 Timestamp: 2025-09-24T08:55:57.959Z Learning: In the Appwrite website Helm deployment, environment variables are managed through ConfigMap rather than direct Helm values injection, so security concerns about secrets in Deployment manifests don't apply to their setup.
...he-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
src/routes/blog/post/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc(1 hunks)
⏰ 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: build
- GitHub Check: tests
🔇 Additional comments (4)
src/routes/blog/post/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc (4)
21-22: DataCamp quote has been corrected.The quote now accurately matches DataCamp's actual wording as identified in the previous review. Good work addressing this feedback.
1-84: Well-structured and engaging blog post.The post has a clear narrative flow that effectively introduces Cursor, Appwrite, and MCP individually before showing how they work together. The progression from tools → integration → benefits → conclusion is logical and easy to follow. The technical concepts are explained in an accessible way, and the call-to-action at the end provides a clear next step for readers.
34-35: Appwrite AI documentation quote is accurate.The quote matches the Appwrite AI documentation at the provided URL. The actual text reads "Appwrite allows you to build powerful AI powered applications with ease. Leverage Appwrite's powerful functions architecture and start building the future." The only minor discrepancy is a hyphenation variation ("AI-powered" in the review vs. "AI powered" on the actual page), which is immaterial to the quote's accuracy and meaning.
19-19: No changes required—quotation marks are justified.The phrase "the best way to code with AI" is confirmed as a direct quote from Cursor's homepage. The quotation marks and citation to cursor.com are accurate and appropriate as-is. No revision needed.
...he-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Actionable comments posted: 9
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc(1 hunks)src/routes/blog/post/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- src/routes/blog/post/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc
🔇 Additional comments (3)
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc (3)
42-52: LGTM!The installation and setup instructions are clear and accurate.
212-226: LGTM!The API configuration example clearly demonstrates the endpoint setup and event emission pattern.
636-652: LGTM!The conclusion effectively summarizes key concepts and provides clear next steps with relevant links.
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
| ### Configure Your Environment | ||
|
|
||
| Create a `.env` file in the project root and add the following environment variables: | ||
|
|
||
| ```bash | ||
| APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 | ||
| APPWRITE_PROJECT_ID=your_project_id | ||
| APPWRITE_API_KEY=your_api_key | ||
| OPENAI_API_KEY=your_openai_key | ||
| ``` |
There was a problem hiding this comment.
🛠️ Refactor suggestion | 🟠 Major
Add a security reminder about protecting API keys.
The tutorial doesn't warn users about keeping their .env file secure and out of version control.
Add a security note after the environment variables:
OPENAI_API_KEY=your_openai_key+> .env file to version control. Make sure .env is listed in your .gitignore file to protect your API keys.
+
Where to find these:
<details>
<summary>🤖 Prompt for AI Agents</summary>
In
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
around lines 54 to 63, the doc shows environment variables but lacks a security
reminder; add a short security note immediately after the code block warning
users to never commit their .env to version control, instructing them to add
.env to .gitignore (use a brief callout/blockquote like "
commit..." placed before the "Where to find these" section) so readers see the
protection guidance in context.
</details>
<!-- This is an auto-generated comment by CodeRabbit -->
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
| ``` | ||
| This command starts the server at http://localhost:3000, you can open this in your browser to see all 10 workflow steps and how they are connected. | ||
|
|
||
|  |
There was a problem hiding this comment.
Fix the media file reference.
The .mov file won't render as an image in browsers. This should either use a video tag with an MP4 file or be converted to an animated GIF.
Replace with proper video embed:
-
+<video width="100%" controls>
+ <source src="/images/blog/build-an-email-marketing-system-with-motia-and-appwrite/interactive-tutorial.mp4" type="video/mp4">
+ Your browser does not support the video tag.
+</video>📝 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.
|  | |
| <video width="100%" controls> | |
| <source src="/images/blog/build-an-email-marketing-system-with-motia-and-appwrite/interactive-tutorial.mp4" type="video/mp4"> | |
| Your browser does not support the video tag. | |
| </video> |
🤖 Prompt for AI Agents
In
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
around line 165 the media reference points to a .mov file which browsers won't
render as an image; replace this with a proper video embed by converting the
.mov to a web-friendly format (MP4 or animated GIF) and update the Markdoc to
embed it using an HTML5 video element (MP4 recommended) with controls,
autoplay/muted if desired, and a poster image fallback so the media displays
correctly across browsers.
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
| ```json | ||
| { | ||
| "name": "Morning Newsletter", | ||
| "subject": "Your daily tech update", | ||
| "template": "newsletter", | ||
| "targetAudience": "active_users", | ||
| "scheduledFor": "2025-10-08T09:00:00Z", | ||
| "personalizeContent": true | ||
| } | ||
| ``` |
There was a problem hiding this comment.
Update the scheduled date to a future date.
The example uses 2025-10-08T09:00:00Z, which is in the past relative to the PR date (November 5, 2025). This will confuse readers and the scheduled campaign won't work as expected.
Apply this diff to use a future date or make it relative:
"name": "Morning Newsletter",
"subject": "Your daily tech update",
"template": "newsletter",
"targetAudience": "active_users",
- "scheduledFor": "2025-10-08T09:00:00Z",
+ "scheduledFor": "2025-11-15T09:00:00Z",
"personalizeContent": true
}Alternatively, update the instruction text on line 577 to be more explicit:
-Create a campaign with a scheduledFor time 10 minutes in the future:
+Create a campaign with a `scheduledFor` time set to a future date (update the date below to be at least 10 minutes from now):📝 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.
| ```json | |
| { | |
| "name": "Morning Newsletter", | |
| "subject": "Your daily tech update", | |
| "template": "newsletter", | |
| "targetAudience": "active_users", | |
| "scheduledFor": "2025-10-08T09:00:00Z", | |
| "personalizeContent": true | |
| } | |
| ``` |
🤖 Prompt for AI Agents
In
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
around lines 579 to 588, the example JSON uses a scheduledFor timestamp that is
now past (2025-10-08T09:00:00Z); update that value to a future timestamp (e.g.,
at least a few days ahead of the PR date) or change it to a relative expression
(e.g., "scheduledFor": "now+7d") so readers see a valid future schedule, and
while here consider updating the adjacent instruction text on line 577 to
explicitly state that the timestamp must be in the future or show how to use a
relative time.
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
…a-and-appwrite/+page.markdoc Co-authored-by: Ebenezer Don <hello@ebenezerdon.com>
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (2)
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc (2)
26-26: Minor formatting inconsistency.There's an extra space after the dash in this list item compared to others.
Apply this diff:
-- **User Preferences** - One-click unsubscribe and user preference management +- **User Preferences** - One-click unsubscribe and user preference management
328-336: Consider improving the formatting of personalization examples.The structure mixes bold headers with inline examples in a way that could be clearer. Consider restructuring for better readability.
Apply this diff:
**Personalization Examples:** -**For a VIP user:** + +For a VIP user: - Subject: VIP: Exclusive Early Access for Sarah - Content includes VIP-specific offers and benefits -**For a new user:** +For a new user: - Subject: Welcome Sarah! Get Started in 5 Minutes - Content focuses on onboarding and getting started tips
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc(1 hunks)
⏰ 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: tests
- GitHub Check: build
🔇 Additional comments (1)
src/routes/blog/post/build-an-email-marketing-system-with-motia-and-appwrite/+page.markdoc (1)
636-652: Excellent conclusion and call-to-action.The conclusion effectively summarizes the key concepts, highlights the value proposition of Motia, and provides clear next steps with relevant links. The acknowledgment section is a nice touch.
…ite/website into tessa-cursorbackendSEOblog
…a-and-appwrite/+page.markdoc
…ite/website into tessa-cursorbackendSEOblog
...he-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/+page.markdoc
Outdated
Show resolved
Hide resolved
…se-of-backend-automation-with-appwrite/+page.markdoc Co-authored-by: Ebenezer Don <hello@ebenezerdon.com>
…ite/website into tessa-cursorbackendSEOblog
What does this PR do?
Test Plan
(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.)
Related PRs and Issues
(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.)
Have you read the Contributing Guidelines on issues?
(Write your answer here.)
Summary by CodeRabbit