feat: dbdeployer documentation website (Astro + Starlight)#55
feat: dbdeployer documentation website (Astro + Starlight)#55renecannao merged 15 commits intomasterfrom
Conversation
Covers provider interface changes, deb extraction, single sandbox, streaming replication, ProxySQL+PostgreSQL wiring, cross-database topology constraints, and testing strategy.
13 tasks covering: provider interface changes, PostgreSQL core, config generation, CreateSandbox, deb extraction, replication, cmd layer routing, ProxySQL wiring, topology constraints, standalone command, integration tests, and CI issue tracking.
10 tasks: scaffold, wiki pipeline, stub docs, quickstart guides, landing page, providers page, blog, 404/OG, GitHub Actions, verification.
Initializes the website/ directory with Astro 6 + Starlight 0.38, including full sidebar config, stub docs for all 34 sidebar pages, content collection config using the Astro v6 loader API, a database- themed SVG favicon, sitemap integration, and a verified production build.
Copies 24 wiki markdown files into the Starlight content collection, injecting frontmatter and stripping [[HOME]] navigation links.
Four polished quickstart guides covering MySQL single sandbox, MySQL replication, PostgreSQL (deb-based unpack), and ProxySQL integration with read/write split. Each guide follows a numbered Install → Deploy → Connect → Clean up pattern with copy-pasteable bash and links to deeper docs.
Adds a custom Astro landing page (not Starlight) at the site root with a dark-themed design: sticky nav, animated hero with gradient title and copy-able install snippet, 4-card feature grid, and a styled terminal demo showing MySQL replication deployment. Includes global CSS custom properties and responsive layout.
Adds a providers comparison page at /providers with a feature matrix table, per-provider cards (MySQL, PostgreSQL, ProxySQL) with command snippets, and a coming-soon Orchestrator teaser section.
- BlogPost.astro layout wrapping Landing.astro with title, date, author, tags, and back-link - BlogPostCard.astro preview card component with hover effects - blog/index.astro listing posts in reverse chronological order - blog/[...slug].astro dynamic route using getCollection + render - Two launch posts: new maintainership announcement and PostgreSQL support - index.astro "What's New" section showing latest 2 blog posts
Custom 404 page uses the Landing layout with dark theme styling, a large accent-colored 404 heading, and links to Home and Docs. SVG OG image placeholder (1200x630) added to public/ for social card metadata; replace with a real PNG before launch.
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (3)
📒 Files selected for processing (62)
📝 WalkthroughWalkthroughA comprehensive website infrastructure is added for dbdeployer using Astro and Starlight, including a GitHub Actions deployment pipeline, site configuration, reusable UI components, multiple documentation pages (migrated from wiki and newly written), blog functionality with sample posts, and planning/specification documents for Phase 3 PostgreSQL provider work. Changes
Sequence DiagramsequenceDiagram
actor Developer
participant GitHub as GitHub Repository
participant Actions as GitHub Actions
participant Runner as Build Runner
participant Pages as GitHub Pages
Developer->>GitHub: Push to master (website/*, docs/wiki/*)
activate GitHub
GitHub->>Actions: Trigger workflow_dispatch
deactivate GitHub
activate Actions
Actions->>Runner: Start build job
activate Runner
Runner->>Runner: Checkout repository
Runner->>Runner: Setup Node.js 20 + npm cache
Runner->>Runner: Install dependencies (website/)
Runner->>Runner: Execute copy-wiki.sh script
Runner->>Runner: Transform wiki markdown → Starlight docs
Runner->>Runner: npm run build (Astro)
Runner->>Runner: Generate website/dist/
Runner->>Runner: Upload dist as Pages artifact
deactivate Runner
Actions->>Actions: Wait for build completion
Actions->>Pages: Deploy job starts
activate Pages
Pages->>Pages: Download artifact
Pages->>Pages: Publish to gh-pages branch
Pages-->>Developer: GitHub Pages URL available
deactivate Pages
deactivate Actions
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
|
Warning Gemini encountered an error creating the summary. You can try again by commenting |
There was a problem hiding this comment.
Pull request overview
Adds a new Astro + Starlight documentation website under website/, intended to replace/augment the GitHub wiki with a docs site, marketing landing page, provider comparison page, and a small blog, deployed to GitHub Pages via Actions.
Changes:
- Introduces an Astro + Starlight site (base path
/dbdeployer) with landing page, providers page, blog, and global styling. - Adds a wiki→Starlight content copy script plus a large set of docs pages and quickstarts.
- Adds a GitHub Actions workflow to build and deploy the site to GitHub Pages.
Reviewed changes
Copilot reviewed 61 out of 65 changed files in this pull request and generated 20 comments.
Show a summary per file
| File | Description |
|---|---|
| website/tsconfig.json | Adds strict Astro TS config. |
| website/src/styles/global.css | Adds global design tokens and shared UI styles. |
| website/src/pages/providers.astro | Adds providers comparison page (matrix + cards). |
| website/src/pages/index.astro | Adds marketing landing page with blog “What’s New” integration. |
| website/src/pages/blog/index.astro | Adds blog index page (collection listing). |
| website/src/pages/blog/[...slug].astro | Adds blog post route using content collection. |
| website/src/pages/404.astro | Adds custom 404 page. |
| website/src/layouts/Landing.astro | Adds shared marketing layout (nav/footer/meta/CSS). |
| website/src/layouts/BlogPost.astro | Adds blog post layout and typography styling. |
| website/src/content/docs/reference/configuration.md | Adds migrated wiki doc page (configuration/init). |
| website/src/content/docs/reference/cli-commands.md | Adds migrated wiki doc page (CLI completion). |
| website/src/content/docs/reference/api-changelog.md | Adds placeholder API changelog page. |
| website/src/content/docs/providers/pxc.md | Adds placeholder provider doc page for PXC. |
| website/src/content/docs/providers/proxysql.md | Adds ProxySQL integration guide content. |
| website/src/content/docs/providers/postgresql.md | Adds placeholder provider doc page for PostgreSQL. |
| website/src/content/docs/providers/mysql.md | Adds migrated wiki doc page (MySQL basedir naming). |
| website/src/content/docs/managing/using.md | Adds migrated wiki doc page (use latest sandbox). |
| website/src/content/docs/managing/users.md | Adds migrated wiki doc page (default DB users). |
| website/src/content/docs/managing/starting-stopping.md | Adds migrated wiki doc page (sandbox management). |
| website/src/content/docs/managing/logs.md | Adds migrated wiki doc page (logs). |
| website/src/content/docs/managing/deletion.md | Adds migrated wiki doc page (deletion/cleanup). |
| website/src/content/docs/managing/customization.md | Adds migrated wiki doc page (customization). |
| website/src/content/docs/index.mdx | Adds docs landing page for Starlight. |
| website/src/content/docs/getting-started/quickstart-proxysql.md | Adds new ProxySQL quickstart. |
| website/src/content/docs/getting-started/quickstart-postgresql.md | Adds new PostgreSQL quickstart. |
| website/src/content/docs/getting-started/quickstart-mysql-single.md | Adds new MySQL single quickstart. |
| website/src/content/docs/getting-started/quickstart-mysql-replication.md | Adds new MySQL replication quickstart. |
| website/src/content/docs/getting-started/installation.md | Adds migrated wiki installation page. |
| website/src/content/docs/deploying/single.md | Adds migrated wiki “single sandbox” doc. |
| website/src/content/docs/deploying/replication.md | Adds migrated wiki “replication” doc. |
| website/src/content/docs/deploying/ndb-cluster.md | Adds placeholder NDB doc page. |
| website/src/content/docs/deploying/multiple.md | Adds migrated wiki “multiple sandboxes” doc. |
| website/src/content/docs/deploying/group-replication.md | Adds placeholder group replication doc page. |
| website/src/content/docs/deploying/fan-in-all-masters.md | Adds placeholder fan-in/all-masters doc page. |
| website/src/content/docs/concepts/sandboxes.md | Adds migrated wiki “default sandbox” concept page. |
| website/src/content/docs/concepts/ports.md | Adds migrated wiki “ports management” concept page. |
| website/src/content/docs/concepts/flavors.md | Adds migrated wiki “flavors/capabilities” concept page. |
| website/src/content/docs/concepts/environment-variables.md | Adds env var reference page. |
| website/src/content/docs/advanced/inter-sandbox-replication.md | Adds migrated wiki advanced replication page. |
| website/src/content/docs/advanced/importing.md | Adds migrated wiki importing page. |
| website/src/content/docs/advanced/go-library.md | Adds migrated wiki Go library page. |
| website/src/content/docs/advanced/concurrent.md | Adds migrated wiki concurrent ops page. |
| website/src/content/docs/advanced/compiling.md | Adds migrated wiki compiling page. |
| website/src/content/docs/advanced/cloning.md | Adds migrated wiki cloning page. |
| website/src/content/blog/2026-03-24-postgresql-support.md | Adds launch blog post (PostgreSQL support). |
| website/src/content/blog/2026-03-24-new-maintainership.md | Adds launch blog post (maintainership). |
| website/src/content.config.ts | Defines content collections (docs + blog). |
| website/src/components/Terminal.astro | Adds terminal demo component. |
| website/src/components/ProviderCard.astro | Adds reusable provider card component. |
| website/src/components/Hero.astro | Adds landing hero + install command copy UX. |
| website/src/components/FeatureGrid.astro | Adds landing feature grid component. |
| website/src/components/BlogPostCard.astro | Adds reusable blog post card component. |
| website/scripts/copy-wiki.sh | Adds wiki→Starlight copy pipeline script. |
| website/public/og-image.svg | Adds placeholder OG image asset. |
| website/public/favicon.svg | Adds site favicon. |
| website/package.json | Adds website package metadata/dependencies. |
| website/astro.config.mjs | Configures Astro base/site + Starlight sidebar + sitemap. |
| website/.gitignore | Ignores Astro build artifacts for website subproject. |
| docs/superpowers/specs/2026-03-24-website-design.md | Adds website design spec. |
| docs/superpowers/specs/2026-03-24-phase3-postgresql-provider-design.md | Adds PostgreSQL provider design spec. |
| docs/superpowers/plans/2026-03-24-website.md | Adds implementation plan. |
| .gitignore | Adds ignores for website artifacts and .worktrees/. |
| .github/workflows/deploy-website.yml | Adds GitHub Pages deployment workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <!-- Open Graph --> | ||
| <meta property="og:title" content={title} /> | ||
| <meta property="og:description" content={description} /> | ||
| <meta property="og:type" content="website" /> | ||
| <meta property="og:url" content="https://proxysql.github.io/dbdeployer/" /> |
There was a problem hiding this comment.
The layout includes Open Graph tags but doesn’t set og:image (and likewise no twitter:image). Since the repo includes an OG image asset, add image meta tags so social shares render a preview card.
| ## Prerequisites | ||
|
|
||
| - dbdeployer installed ([Installation guide](/getting-started/installation)) | ||
| - Internet access to download the MySQL binary | ||
|
|
There was a problem hiding this comment.
These links are missing the /docs prefix (e.g. (/getting-started/installation)), so they will resolve to /dbdeployer/getting-started/... instead of Starlight docs pages under /dbdeployer/docs/.... Use absolute /docs/... links (which will be base-prefixed) or relative links within the docs section.
| ## What's next? | ||
|
|
||
| - [Replication topologies](/deploying/replication) — fan-in, all-masters, semi-sync | ||
| - [Group Replication](/deploying/group-replication) — single-primary and multi-primary | ||
| - [Quick Start: ProxySQL Integration](/getting-started/quickstart-proxysql) |
There was a problem hiding this comment.
The “What’s next?” links (/deploying/replication, /deploying/group-replication, /getting-started/quickstart-proxysql) are missing the /docs prefix and will 404 under the configured site base. Update them to /docs/deploying/... and /docs/getting-started/....
| ## Prerequisites | ||
|
|
||
| - dbdeployer installed ([Installation guide](/getting-started/installation)) | ||
| - `dpkg-deb` available (standard on Debian/Ubuntu) | ||
| - `apt-get` or `apt` for downloading packages (no root needed for `apt-get download`) |
There was a problem hiding this comment.
This page links to the installation guide as (/getting-started/installation), which will resolve outside the docs section. Use /docs/getting-started/installation/ (or a relative link) so it works under the /dbdeployer base path.
| ## What's next? | ||
|
|
||
| - [PostgreSQL provider details](/providers/postgresql) — replication, options, limitations | ||
| - [Managing sandboxes](/managing/using) — start, stop, status |
There was a problem hiding this comment.
The “What’s next?” links (/providers/postgresql, /managing/using) are missing the /docs prefix and will 404 under Starlight routing. Update them to /docs/providers/postgresql/ and /docs/managing/using/ (or use relative links).
|
|
||
| Deploy a three-node master/slave replication setup from a single command. Assumes you have already downloaded MySQL 8.4 (see [Quick Start: MySQL Single](/getting-started/quickstart-mysql-single)). | ||
|
|
There was a problem hiding this comment.
This page links to [Quick Start: MySQL Single](/getting-started/quickstart-mysql-single), which will resolve outside the Starlight docs section. Use /docs/getting-started/quickstart-mysql-single/ (base-prefixed) or a relative link.
| --- | ||
| const base = '/dbdeployer'; | ||
| const githubUrl = 'https://github.com/ProxySQL/dbdeployer'; | ||
| const installCmd = 'curl -sSL https://github.com/ProxySQL/dbdeployer/main/scripts/install.sh | bash'; |
There was a problem hiding this comment.
The installCmd points to scripts/install.sh, but this repo contains scripts/dbdeployer-install.sh and no scripts/install.sh. The copy-to-clipboard install command on the homepage will fail; update it to a real install entrypoint (e.g., the existing scripts/dbdeployer-install.sh raw URL) or a documented release-install method.
| const installCmd = 'curl -sSL https://github.com/ProxySQL/dbdeployer/main/scripts/install.sh | bash'; | |
| const installCmd = 'curl -sSL https://github.com/ProxySQL/dbdeployer/main/scripts/dbdeployer-install.sh | bash'; |
| <style> | ||
| @import '../styles/global.css'; | ||
| </style> |
There was a problem hiding this comment.
Global CSS is imported twice (once in <head> and again in <style is:global>). This duplicates styles in the output and makes it harder to reason about precedence. Keep a single import (prefer the is:global block, or import the CSS in the frontmatter) and remove the other.
| ## What's next? | ||
|
|
||
| - [Deploying a single sandbox](/deploying/single) — ports, passwords, options | ||
| - [Managing sandboxes](/managing/using) — start, stop, restart | ||
| - [Quick Start: MySQL Replication](/getting-started/quickstart-mysql-replication) |
There was a problem hiding this comment.
The “What’s next?” section links (e.g. /deploying/single, /managing/using) are missing the /docs prefix, which will make them 404 under the configured base path. Switch them to /docs/deploying/... and /docs/managing/... (or use relative links).
| echo "---" | ||
| echo "" | ||
| # Strip lines containing [[HOME]] or [[home]] style wiki nav | ||
| sed -E '/\[\[HOME\]\]/Id' "$src" \ |
There was a problem hiding this comment.
sed -E '/\[\[HOME\]\]/Id' relies on GNU sed’s case-insensitive (I) flag, which is not portable to BSD sed (default on macOS). Since local doc builds are likely on macOS too, consider using a portable regex (e.g. [Hh][Oo][Mm][Ee]) or detecting/using gsed when available.
| sed -E '/\[\[HOME\]\]/Id' "$src" \ | |
| sed -E '/\[\[[Hh][Oo][Mm][Ee]\]\]/d' "$src" \ |
Summary
website/— docs, marketing landing page, providers comparison, blogcopy-wiki.shtransforms and copies 24 wiki pages fromdocs/wiki/into Starlight content collections with frontmatter injectiongh-pagesTest Plan
proxysql.github.io/dbdeployer/public/og-image.svgwith a real 1200x630 PNG before sharing on socialSummary by CodeRabbit
Release Notes
New Features
Documentation