Skip to content

SEO refresh: Deploy MERN Stack on DigitalOcean with Pulumi#101

Closed
CamSoper wants to merge 2 commits intomasterfrom
claude/seo-refresh-mern-blog-okmI2
Closed

SEO refresh: Deploy MERN Stack on DigitalOcean with Pulumi#101
CamSoper wants to merge 2 commits intomasterfrom
claude/seo-refresh-mern-blog-okmI2

Conversation

@CamSoper
Copy link
Copy Markdown
Owner

Conditional SEO refresh for the fullstack-pulumi-mern-stack-digitalocean blog post per pulumi/marketing#1683.

The post peaked at 1,133 organic PVs in March 2022 and dropped 99.1% to 10 by March 2026 (T12M = 124). The classification is conditional refresh — keep it lean, so this PR restructures the post for answer-first SEO without rewriting the working code walkthrough.

Summary

  • Answer-first intro: Replaced the long anecdotal opening with a 3-sentence direct answer to "how do you deploy MERN on DigitalOcean with Pulumi?"
  • TL;DR section at the top with what you'll build, write, need, why, and how long it takes.
  • H2s rephrased as user questions: "Charting a course" → "How do you map MERN tiers to App Platform components?", "Creating the project" → "How do you create the Pulumi project?", etc.
  • HowTo schema (JSON-LD): Inline <script type="application/ld+json"> block covering the six deployment steps, with tool entries for the prerequisites. Sits alongside the auto-generated BlogPosting schema rather than replacing it.
  • Comparison table: DigitalOcean vs. Render vs. Railway vs. Fly.io for MERN deployments — the only one of the four with first-party Managed MongoDB and a mature first-party Pulumi provider.
  • 2026 DigitalOcean services: Updated Managed MongoDB engine version from 57 (TS and Python). Re-verified DO product names and links (App Platform, Managed Databases).
  • Code re-verification: Caught and fixed the local MongoDB port typo (2710727017); confirmed remaining CLI commands and Pulumi resources still match the current @pulumi/digitalocean API surface.
  • Internal links from current Pulumi full-stack content: Added cross-links to Deploying a PERN stack application to AWS, Getting started on DigitalOcean with Pulumi, and Pulumi ESC. Promoted /docs/install/ → canonical /docs/get-started/download-install/.
  • "Last updated" bump to 2026-04-30 plus a Changelog section at the bottom.

Explicitly not included

Per the issue: no FAQPage schema and no FAQ section. Labelling a blog post as a FAQPage violates Google's structured-data guidelines.

Test plan

  • make build produces the post without Hugo template errors (the inline <script type="application/ld+json"> relies on markup.goldmark.renderer.unsafe: true, which is already set in config/_default/config.yml).
  • Rendered page validates clean in Google's Rich Results Test for HowTo.
  • Both the existing BlogPosting schema (from the auto collector) and the new HowTo JSON-LD appear in the rendered HTML.
  • Comparison table renders correctly.
  • #setting-up anchor still works (preserved on the renamed H2).

Refs pulumi/marketing#1683.

https://claude.ai/code/session_01BmfMjLUcoNJfhaiWoZhNLj


Generated by Claude Code

Conditional refresh per pulumi/marketing#1683 (peaked at 1,133 organic
PVs in March 2022, T12M now 124). Restructures for answer-first SEO
without rewriting the working code walkthrough.

- Answer-first intro and TL;DR up top
- H2s rephrased as user questions
- Inline HowTo JSON-LD covering the six deployment steps
- Comparison table: DigitalOcean vs. Render vs. Railway vs. Fly.io for MERN
- Bump Managed MongoDB from version 5 to version 7
- Fix local Mongo port typo (27107 -> 27017)
- Internal links to PERN/AWS, Getting started on DigitalOcean, and Pulumi ESC
- Bump updated date to 2026-04-30 and add changelog

No FAQPage schema or FAQ section per Google structured-data guidance.

Co-Authored-By: Claude <noreply@anthropic.com>
@CamSoper CamSoper marked this pull request as ready for review April 30, 2026 22:37
@github-actions github-actions Bot added the domain:blog PR touches blog posts or customer stories label Apr 30, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 30, 2026

🤖 Review updated.

@claude
Copy link
Copy Markdown

claude Bot commented Apr 30, 2026

Claude Review — Last updated 2026-04-30T23:15:00Z

🚨 Outstanding ⚠️ Low-confidence 💡 Pre-existing ✅ Resolved
0 0 0 7

🚨 Outstanding in this PR

None — all findings resolved.

⚠️ Low-confidence

None.

💡 Pre-existing issues in touched files

None outstanding.

✅ Resolved since last review

  • line 99 — Railway "Managed MongoDB" corrected to "No (unmanaged template)" — fixed in 81df2d2. Table now correctly shows Railway as unmanaged. The paragraph below ("DigitalOcean is the only one of the four with first-party Managed MongoDB") remains accurate.

  • line 25 vs 33 — Time to deploy aligned to ~15 minutes — fixed in 81df2d2. TL;DR body now reads "~15 minutes", matching the HowTo schema's "totalTime": "PT15M".

  • Mongo v7/8 (low-confidence) — conceded: author confirms v7 is the intentional "stable" choice for this refresh; deferring to author authority.

  • line 181 — missing article "a" — fixed in 81df2d2. "creating a new Pulumi project."

  • line 229 — redundant "as well" — fixed in 81df2d2. Removed trailing "as well".

  • line 500 — empty qualifier "easily" — fixed in 81df2d2. Dropped.

  • line 738 — empty intensifiers "definitely" / "a little" — fixed in 81df2d2. Dropped both.

📜 Review history

  • 2026-04-30T22:43:00Z — initial review (12123ca)
  • 2026-04-30T23:15:00Z — re-reviewed after fix push (1 new commit, 81df2d2); all 7 findings resolved (including Mongo v7/8 conceded per author)

Pushed a fix? Think a finding is wrong? Mention @claude to refresh or argue your case.

@github-actions github-actions Bot added review:claude-ran Claude review has completed for this PR's current state and removed review:claude-working labels Apr 30, 2026
@CamSoper
Copy link
Copy Markdown
Owner Author

@claude Implement all your recommended fixes, including the pre-existing ones.

Drop the Mongo v7/8 issue -- 7 is, as you said, defensible.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 30, 2026

🤖 Done.

- Correct Railway "Managed MongoDB" table cell to "No (unmanaged template)" per Railway's own docs
- Align TL;DR "Time to deploy" (~15 min) with HowTo schema totalTime PT15M
- Fix missing article: "creating a new Pulumi project"
- Drop redundant "as well" in App Platform GitLab note
- Drop empty qualifier "easily" from DatabaseFirewall recommendation
- Drop empty intensifiers "definitely" and "a little" from closing paragraph

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown
Owner Author

Closing — opened in this fork by mistake. Migrated to pulumi#18742.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

domain:blog PR touches blog posts or customer stories review:claude-ran Claude review has completed for this PR's current state

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants