Skip to content

docs(docs): add multi-SDK server-side examples across platform docs fixes DOC-397#11746

Merged
scopsy merged 6 commits into
nextfrom
cursor/multi-sdk-server-side-docs-e2fb
Jul 1, 2026
Merged

docs(docs): add multi-SDK server-side examples across platform docs fixes DOC-397#11746
scopsy merged 6 commits into
nextfrom
cursor/multi-sdk-server-side-docs-e2fb

Conversation

@scopsy

@scopsy scopsy commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds full 7-tab server-side SDK examples (Node.js, Python, Go, PHP, .NET, Java, cURL) to every in-scope documentation page that previously showed TypeScript-only or partial SDK snippets.

43 files updated across platform, guides, and community docs (~133 code blocks expanded).

Review fixes (Greptile)

  • fcm.mdx — Fixed invalid Go (map[string]any nested literals), PHP (array syntax), .NET (Dictionary/Overrides), and Java (Map.of / additionalProperties) in topic and web-push override tabs
  • apns.mdx — Same syntax fixes for APNS override tabs; empty payload examples use valid PHP [], C# Dictionary, and Java Map.of(); added missing import java.util.Map; to the "Send a notification" Java tab
  • clerk.mdx, auth0.mdx, stripe.mdx — Python tabs now instantiate Novu inside the with block instead of reusing a module-level client
  • trigger-workflow.mdx — Cross-reference text clarified (workflow_identifier vs welcome-email)

What changed

Tier 1 — Core platform

  • Contexts: manage-contexts.mdx, contexts.mdx, multi-tenancy.mdx
  • Concepts: subscribers.mdx, tenants.mdx
  • Workflow: trigger-workflow.mdx, trigger-overrides.mdx

Tier 2 — Integrations

  • Channel overviews: email, sms, push, chat
  • 19 provider pages: SendGrid, FCM, Slack, Twilio, etc.

Tier 3 — Guides & AI

  • 11 guide pages (webhooks, inngest, triggerdotdev, use-cases, migration, managing-workflows)
  • build-with-ai/skills.mdx

Tier 4 — Community

  • deploy-with-docker.mdx — self-hosted examples with serverURL on all SDK tabs

Excluded (intentionally unchanged)

  • docs/api-reference/** — auto-generated from OpenAPI
  • docs/.mintlify/skills/** — synced from external repo
  • Client-side SDK pages (@novu/react, Inbox quickstarts)
  • Framework docs (TypeScript-only by design)
  • guides/webhooks/segment.mdx — raw fetch in Segment runtime

Test plan

  • Verified all 43 in-scope files include <Tab title="Java"> tabs
  • Fixed Greptile-flagged invalid syntax in FCM, APNS, webhook, and trigger-workflow pages
  • TesterArmy exploration passed on SDK tab pages
  • Mintlify preview — confirm tab rendering on updated pages
Open in Web Open in Cursor 

Greptile Summary

This PR expands documentation across 43 files by adding full 7-tab server-side SDK examples (Node.js, Python, Go, PHP, .NET, Java, cURL) to every in-scope platform, guide, and community page that previously showed only TypeScript or partial snippets. It also applies targeted fixes to previously reviewed syntax errors in FCM, APNS, and webhook pages.

  • ~133 code blocks expanded across push, email, SMS, chat, subscriber, tenant, workflow, and guide docs with correct language-specific idioms (typed Go map literals, PHP array syntax, C# Dictionary initializers, Java Map.of/Map.ofEntries with proper imports).
  • Previously flagged issues resolved: invalid Go/PHP/.NET/Java syntax in fcm.mdx and apns.mdx override tabs, Python context-manager reuse in clerk.mdx, auth0.mdx, and stripe.mdx, missing import java.util.Map in the APNS Java tab, and the trigger-workflow.mdx cross-reference identifier mismatch.
  • One remaining nit: apns.mdx has a duplicate using System.Collections.Generic; in its first .NET tab — a copy-paste artifact that should be removed.

Confidence Score: 5/5

Documentation-only change with no runtime code; all previously flagged syntax errors have been corrected and the one remaining nit (duplicate using directive in a C# example) has no functional impact.

Every previously reported syntax error across FCM, APNS, the webhook guides, and trigger-workflow.mdx has been addressed in this revision. The only new issue is a duplicate using System.Collections.Generic; in one .NET code snippet in apns.mdx — a cosmetic copy-paste artifact that doesn't affect readers' ability to use the example.

docs/platform/integrations/push/apns.mdx — duplicate using directive in its first .NET tab.

Important Files Changed

Filename Overview
docs/platform/integrations/push/apns.mdx Adds 6 new SDK language tabs for device-token registration and notification triggering; duplicate using System.Collections.Generic; in the first .NET tab is the only issue.
docs/platform/integrations/push/fcm.mdx All previously flagged Go, PHP, .NET, and Java syntax errors in override tabs are now fixed with correct typed map literals and Dictionary initializers.
docs/guides/webhooks/clerk.mdx Python tab now correctly instantiates Novu inside the with block, fixing the previously flagged context-manager reuse issue.
docs/guides/webhooks/auth0.mdx Python context-manager fix applied; all 7 SDK tabs are correctly structured.
docs/guides/webhooks/stripe.mdx Python context-manager fix applied; all 7 SDK tabs are correctly structured.
docs/platform/workflow/trigger-workflow.mdx Cross-reference text updated to say "replace workflow_identifier with your workflow ID, such as welcome-email", resolving the previous identifier mismatch.
docs/platform/integrations/trigger-overrides.mdx Adds complete 7-tab SDK examples for channel overrides; Java uses Map.ofEntries/Map.entry correctly with proper imports.
docs/platform/workflow/advanced-features/contexts/manage-contexts.mdx Largest file in the PR (~900-line diff); adds 7-language context/tenancy examples with correct imports across all tabs.
docs/guides/triggerdotdev.mdx Adds multi-SDK examples for Trigger.dev integration; Java snippets are partial (no class wrapper/imports) which is intentional for guide-style docs.
docs/guides/inngest.mdx Adds 7-tab SDK examples throughout the Inngest integration guide; code snippets are intentionally partial (guide style).

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[PR: Multi-SDK Docs Expansion] --> B[43 Files Updated]
    B --> C[Platform Docs]
    B --> D[Guide Docs]
    B --> E[Community Docs]
    C --> C1[Push: FCM, APNS, Expo, OneSignal...]
    C --> C2[Email: SendGrid, Mailersend...]
    C --> C3[SMS: Twilio, Gupshup]
    C --> C4[Chat: Slack, Discord, Teams...]
    C --> C5[Concepts: Subscribers, Tenants]
    C --> C6[Workflow: Trigger, Overrides, Contexts]
    D --> D1[Webhooks: Clerk, Auth0, Stripe]
    D --> D2[Integrations: Inngest, Trigger.dev]
    D --> D3[Use Cases & Recipes]
    E --> E1[Deploy with Docker]
    C1 & C2 & C3 & C4 & C5 & C6 & D1 & D2 & D3 & E1 --> F[7-Tab SDK Examples Added]
    F --> G[Node.js]
    F --> H[Python]
    F --> I[Go]
    F --> J[PHP]
    F --> K[.NET]
    F --> L[Java]
    F --> M[cURL]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A[PR: Multi-SDK Docs Expansion] --> B[43 Files Updated]
    B --> C[Platform Docs]
    B --> D[Guide Docs]
    B --> E[Community Docs]
    C --> C1[Push: FCM, APNS, Expo, OneSignal...]
    C --> C2[Email: SendGrid, Mailersend...]
    C --> C3[SMS: Twilio, Gupshup]
    C --> C4[Chat: Slack, Discord, Teams...]
    C --> C5[Concepts: Subscribers, Tenants]
    C --> C6[Workflow: Trigger, Overrides, Contexts]
    D --> D1[Webhooks: Clerk, Auth0, Stripe]
    D --> D2[Integrations: Inngest, Trigger.dev]
    D --> D3[Use Cases & Recipes]
    E --> E1[Deploy with Docker]
    C1 & C2 & C3 & C4 & C5 & C6 & D1 & D2 & D3 & E1 --> F[7-Tab SDK Examples Added]
    F --> G[Node.js]
    F --> H[Python]
    F --> I[Go]
    F --> J[PHP]
    F --> K[.NET]
    F --> L[Java]
    F --> M[cURL]
Loading

Reviews (3): Last reviewed commit: "docs(docs): add missing Map import in AP..." | Re-trigger Greptile

cursoragent and others added 4 commits June 30, 2026 17:46
Co-authored-by: Dima Grossman <dima@grossman.io>
Co-authored-by: Dima Grossman <dima@grossman.io>
Co-authored-by: Dima Grossman <dima@grossman.io>
Co-authored-by: Dima Grossman <dima@grossman.io>
@linear-code

linear-code Bot commented Jun 30, 2026

Copy link
Copy Markdown

DOC-397

@netlify

netlify Bot commented Jun 30, 2026

Copy link
Copy Markdown

Deploy Preview for dashboard-v2-novu-staging canceled.

Name Link
🔨 Latest commit b4ed1c9
🔍 Latest deploy log https://app.netlify.com/projects/dashboard-v2-novu-staging/deploys/6a440c095ca9640008a5ccb0

@mintlify

mintlify Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
novu 🟢 Ready View Preview Jun 30, 2026, 6:05 PM

@testerarmy

testerarmy Bot commented Jun 30, 2026

Copy link
Copy Markdown

TesterArmy is running exploration tests on this Pull Request.

Result Dashboard Duration Commit Updated (UTC)
Open 6m 47s b4ed1c9 Jun 30, 2026 6:42pm

Summary

All 10 steps passed.

Planned Steps (10/10 completed)

# Step Result
1 Navigate to the deployment URL root to verify the docs site loads
2 Verify the docs site homepage renders without errors
3 Navigate to /platform/concepts/subscribers
4 Verify the page renders and SDK code tab switcher shows multiple language tabs (Node.js, Python, Go, etc.)
5 Click through each SDK tab (Python, Go, PHP, .NET, Java, cURL) and verify each tab displays a code block
6 Verify each selected SDK tab shows a non-empty code block with relevant code
7 Navigate to /platform/integrations/push/fcm and switch through the SDK tabs
8 Verify all 7 SDK tabs are present and render code without syntax errors visible in the UI
9 Navigate to /platform/integrations/chat/slack and verify SDK tabs render correctly
10 Screenshot the Slack integration page showing the multi-SDK code tabs
Recording (1)

Test Recording

All Screenshots (1)

Screenshot 1

Screenshot 1

Comment thread docs/platform/integrations/push/fcm.mdx Outdated
Comment thread docs/platform/integrations/push/fcm.mdx Outdated
Comment thread docs/platform/integrations/push/fcm.mdx Outdated
Comment thread docs/guides/webhooks/clerk.mdx Outdated
Comment thread docs/platform/workflow/trigger-workflow.mdx Outdated
@scopsy

scopsy commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

@cursoragent review comments

@cursor

cursor Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

All five Greptile review comments are addressed in commit 04b89fa228 on PR #11746.

Fixes applied

Issue File(s) Fix
1–3: Invalid Go/PHP/.NET/Java syntax fcm.mdx (topic + web-push sections) Replaced JSON-style {} literals with typed constructors: map[string]any{...}, PHP [...], C# Dictionary/Overrides.Providers, Java Map.of / additionalProperties
Same pattern apns.mdx (override section) Same syntax corrections; empty-payload examples use [], new Dictionary<string, object>(), Map.of()
4: Python context manager anti-pattern clerk.mdx, auth0.mdx, stripe.mdx Moved Novu(...) inside with Novu(...) as novu: so each call gets a fresh client instead of reusing a closed module-level instance
5: Misleading cross-reference trigger-workflow.mdx Clarified that the Trigger Event API section uses workflow_identifier, and readers should substitute their own workflow ID (e.g. welcome-email)

Note

Similar invalid {} syntax may still exist in other push provider pages (expo-push.mdx, onesignal.mdx, push-webhook.mdx) that Greptile did not flag in this review. I can sweep those next if you want.

Open in Web Open in Cursor 

… fixes DOC-397

Co-authored-by: Dima Grossman <dima@grossman.io>
Comment thread docs/platform/integrations/push/apns.mdx
@scopsy

scopsy commented Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

@cursoragent review comments

@cursor

cursor Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Fixed the remaining Greptile review comment in commit b4ed1c9f41.

Fix applied

docs/platform/integrations/push/apns.mdx — The "Send a notification" Java tab used Map.of() without importing Map. Added import java.util.Map; to match the overrides tab elsewhere in the same file.

Review status

All 6 Greptile issues are now addressed:

Issue Status
Invalid Go/PHP/.NET/Java syntax in fcm.mdx Fixed in 04b89fa228
Same syntax issues in apns.mdx overrides Fixed in 04b89fa228
Python context manager anti-pattern (clerk/auth0/stripe) Fixed in 04b89fa228
Misleading welcome-email cross-reference Fixed in 04b89fa228
Missing import java.util.Map in APNS Java tab Fixed in b4ed1c9f41

PR #11746 is updated and ready for re-review. I can also sweep the other push provider pages (expo-push, onesignal, etc.) for similar syntax issues if you want that.

Open in Web Open in Cursor 

Co-authored-by: Dima Grossman <dima@grossman.io>
@scopsy scopsy merged commit 526b1e9 into next Jul 1, 2026
40 checks passed
@scopsy scopsy deleted the cursor/multi-sdk-server-side-docs-e2fb branch July 1, 2026 05:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants