Skip to content

docs(website): migrate docs site from Starlight to Cloudflare Nimbus - #42

Merged
amondnet merged 2 commits into
mainfrom
amondnet/docs-nimbus
Oct 19, 2026
Merged

amondnet merged 2 commits into
mainfrom
amondnet/docs-nimbus

Conversation

@amondnet

@amondnet amondnet commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Replace Astro Starlight with Cloudflare Nimbus (@cloudflare/nimbus-docs 0.18.1) for the website/ docs site. Nimbus adds Markdown versions of pages, llms.txt, per-page OG images, and Pagefind search, and the existing content carries over.

What changed

  • Scaffolded Nimbus (bun, static output) into website/: layouts, components, routes, styles, AGENT.md/CLAUDE.md, nimbus.json. Removed @astrojs/starlight, starlight-theme-black, and astro.config.mjs.
  • astro.config.ts keeps the site URL, title, and GitHub/edit links. The sidebar autogenerates Guides / Services / Reference from directories, ordered by the existing sidebar.order frontmatter.
  • The splash home page (old index.mdx) is rebuilt as src/pages/index.astro: CTAs, four feature cards, quick start, attribution footer.
  • scripts/sync-services.ts now writes services/*.mdx, because Nimbus renders :::note admonitions only in MDX (in .md they rendered literally). The CI freshness check still passes.
  • Dropped the unused partials collection and Render component (removes a build warning).
  • New site capabilities: Markdown version of every page, /llms.txt and /llms-full.txt, per-page OG images, Pagefind search, light/dark toggle, sitemap.

Scope

Docs site only. Deployment is unchanged: Cloudflare Pages project emulate via wrangler pages deploy. The Nimbus template defaults to Workers; switching is not part of this PR.

Tradeoffs

  • Root ESLint now ignores website/src/**. Autofix rewrote 1,500+ lines of scaffolded files, which would break nimbus-docs diff --apply upgrades. astro.config.ts and scripts stay linted.
  • Kept the Astro ^7.4.0 security bump (the template pins 7.3.1) and dropped the no-longer-installed postcss-selector-parser override.

Blast radius

Limited to website/ and the root ESLint config. No emulator or package code changes.

Review tip: most of the diff under website/src/components/ui, layouts, pages, and styles is unmodified Nimbus scaffold output. The hand-written parts are astro.config.ts, src/pages/index.astro, scripts/sync-services.ts, package.json, README.md, eslint.config.ts, and the content.config.ts/components.ts edits.

Verification

  • bun install --frozen-lockfile; bun scripts/sync-services.ts leaves no diff.
  • bun run build (22 pages, no warnings); bun run typecheck (0 errors/warnings); bun run lint:docs clean; bunx nimbus-docs check all ok.
  • Root ESLint on website clean; bun audit reports no vulnerabilities.
  • Home and /services/kakao/ checked visually in a browser via astro preview.

Related issue

No linked issue.

Checklist

  • PR title follows Conventional Commits
  • Tests added or updated, and the suite passes (bun run test) — N/A: docs site only; no package code or tests changed, verified by build, astro check, and nimbus-docs check
  • Lint/format pass (bun run lint)
  • Documentation updated if behavior changed
  • No breaking change, or a BREAKING CHANGE: note is included

Summary by cubic

Replaces the Astro Starlight–based docs site in website/ with Cloudflare's Nimbus framework (@cloudflare/nimbus-docs 0.18.1). All existing pages carry over, and the site gains Pagefind search, per-page Markdown versions, llms.txt / llms-full.txt, per-page OG images, a light/dark toggle, and a sitemap.

  • Scaffolds Nimbus's starter template (bun, static output) into website/; Starlight, the black theme, and astro.config.mjs are removed. AGENT.md/CLAUDE.md document the Cloudflare Pages config and upgrade workflow, and the README now uses the scoped bunx @cloudflare/nimbus-docs command.
  • The sidebar autogenerates from the guides, services, and reference directories, honoring each page's sidebar.order.
  • The old splash home page is rebuilt as src/pages/index.astro with the same CTAs and feature cards.
  • scripts/sync-services.ts now writes services/*.mdx so :::note admonitions render; the CI freshness check still passes.
  • Root ESLint now ignores website/src/** so nimbus-docs diff --apply upgrades stay clean; config and scripts remain linted.
  • The Astro ^7.4.0 security bump is kept; the now-unused postcss-selector-parser override and the direct canvaskit-wasm dependency are dropped.

Written for commit 0a65673. Summary will update on new commits.

Turn on auto-fix

- scaffold @cloudflare/nimbus-docs 0.18.1 (bun, static output) into website/:
  layouts, components, routes, styles, AGENT.md/CLAUDE.md, nimbus.json;
  drop @astrojs/starlight, starlight-theme-black and astro.config.mjs
- astro.config.ts keeps the site URL, title and GitHub/edit links; the
  sidebar autogenerates Guides/Services/Reference from directories
  ordered by sidebar.order
- rebuild the splash home page as src/pages/index.astro because Nimbus
  has no hero template
- sync-services.ts now emits services/*.mdx, since Nimbus renders ::: admonitions
  only in MDX
- drop the unused partials collection and Render component
- exclude website/src/** from root ESLint so upstream template upgrades
  (nimbus-docs diff --apply) apply cleanly
- keep the Astro ^7.4.0 security bump and drop the now-unused
  postcss-selector-parser override
- deployment stays on the Cloudflare Pages project `emulate`
@github-actions

github-actions Bot commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

📖 Docs preview deployed

URL
Preview https://e6311505.emulate.pages.dev
Branch alias https://amondnet-docs-nimbus.emulate.pages.dev

Commit: 0a65673

@socket-security

socket-security Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

@codacy-production

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 3 critical · 46 high · 13 medium · 7 minor

Alerts:
⚠ 69 issues (≤ 0 issues of at least minor severity)

Results:
69 new issues

Category Results
Compatibility 7 minor
ErrorProne 13 medium
27 high
Security 3 critical
19 high

View in Codacy

🟢 Metrics 428 complexity · 0 duplication

Metric Results
Complexity 428
Duplication 0

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@amondnet
amondnet marked this pull request as ready for review October 17, 2026 18:41

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 128 files

Architecture diagram
sequenceDiagram
    participant User as User Browser
    participant Pages as Cloudflare Pages
    participant Astro as Astro Build (via Nimbus)
    participant Content as Content Collections
    participant Skills as Skills Repo
    participant Search as Pagefind Index

    Note over User,Search: Static Docs Site Runtime (Nimbus)

    User->>Pages: GET / (home)
    Pages-->>User: index.astro (CTAs, cards)
    User->>Pages: GET /guides/configuration/
    Pages->>Astro: Render [...slug].astro route
    Astro->>Content: Load docs collection entry
    Content-->>Astro: MDX content + frontmatter
    Astro->>Astro: Apply sidebar order + autogenerate nav
    Astro-->>Pages: Static HTML + CSS + JS
    Pages-->>User: Full page (with TOC + sidebar)

    Note over User,Pages: NEW: Agent Interfaces
    User->>Pages: GET /guides/configuration/index.md
    Pages-->>User: Markdown version of page
    User->>Pages: GET /llms.txt
    Pages-->>User: Concatenated docs index for agents

    Note over User,Search: Pagefind Search
    User->>Pages: Click search (Ctrl+K)
    Pages-->>User: Search dialog opens
    User->>Search: Query "config"
    Search-->>User: Results (via pagefind JS)
    User->>Pages: Click result
    Pages-->>User: Navigate to page

    Note over User,Pages: OG Image Generation
    User->>Pages: GET /og/guides/configuration.png
    Pages->>Astro: Generate via astro-og-canvas
    Astro-->>Pages: PNG response
    Pages-->>User: OG image

    Note over Skills,Content: Content Sync (CI/Deploy)
    Skills->>Content: sync-services.ts (mdx generation)
    Content-->>Skills: services/*.mdx files
    Note over Astro,Content: Build-time: nimbus-docs lint + astro check

    alt Production build
        Astro->>Search: Generate static index
        Astro->>Pages: Deploy via wrangler
    else Preview/Dev
        Astro->>User: astro dev server
    end
Loading

Reply with feedback, questions, or to request a fix.

Turn on auto-fix | Re-trigger cubic

Comment thread website/AGENT.md Outdated
Comment thread website/src/components/ui/search/search.client.ts
Comment thread website/src/components/ui/dialog/dialog.client.ts
Comment thread website/src/layouts/DocsLayout.astro
Comment thread website/src/styles/globals.css
Comment thread website/src/components/ui/steps/Steps.astro
Comment thread website/src/components/ui/button/Button.astro
Comment thread website/src/components/ui/breadcrumbs/Breadcrumbs.astro
Comment thread website/src/components/ui/tabs/tabs.client.ts
Comment thread website/src/components/ui/toc/TOC.astro
@greptile-apps

greptile-apps Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge, with the earlier non-blocking heading visibility issue still present.

Summary

Migrates the docs website from Starlight to Nimbus while keeping Cloudflare Pages deployment.

  • Nimbus builds the docs site from its content folders.
  • Readers can search the docs with Pagefind.
  • Readers can switch the docs between light and dark.
  • Each docs page has a Markdown version and agent indexes.
  • The home page keeps its quick start and feature cards.
  • Root ESLint leaves Nimbus scaffold files in their upstream style.

Reviews (2) · Last reviewed commit: "chore(website): apply AI code review sug..." · Reviewed by Greptile

Comment thread website/src/styles/prose.css
Document the Cloudflare Pages config in AGENT.md's audit rule, use the scoped bunx @cloudflare/nimbus-docs command in the README, retitle the home-page card to match its list, and drop the direct canvaskit-wasm dependency that duplicated astro-og-canvas's own copy.
@sonarqubecloud

Copy link
Copy Markdown

@amondnet
amondnet merged commit 3b916fb into main Oct 19, 2026
10 of 11 checks passed

This branch was successfully deployed

1 active deployment
preview — 0a656733 Deployed Oct 19, 2026 by github-actions[bot]
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.

1 participant