Business teams use AI to generate pages. Tech team maintains the design system.
Next.js pages coexisting with the main PingCAP WordPress site. Nginx proxies specific paths to this app.
Use the Admin page builder — a web tool, no install and no Terminal:
👉 https://website-launchpad-git-staging-pingcap.vercel.app/admin
- Open the link and pick the path that fits you:
- Build a New Page with AI — create a page from scratch from your brief.
- Publish an Existing AI Page — import Google Docs / paste / upload
.docx/.md. - I Don't Know Where to Start — a guided, step-by-step walkthrough.
- Generate and edit the page, and preview it live in the browser.
- Click Publish when it's ready.
What Publish does: it runs a quality review, then opens a Pull Request on GitHub and builds a preview (track it on the Builds page). An admin — a tech-team maintainer with merge access — reviews and merges the PR; once merged into main, the page goes live automatically (deploy.yml).
Prefer chatting instead of the web UI? You can do the same with the Claude desktop app — no local setup and no Terminal, Claude generates and previews pages for you.
- Install the Claude desktop app: https://claude.ai/download
- Open this repo in Claude Code.
- Paste your brief and ask Claude to create or update the page.
- Ask Claude to preview it — a live preview opens right inside Claude.
- When the page is ready, ask Claude:
Submit to GitHub.
What "Submit to GitHub" does — Claude runs a quality gate and opens a Pull Request for you; it does not merge anything:
- Branch check — if you are on
main, Claude stops and creates a feature branch first (changes must go through a PR). - Pre-push review — scores the page across Code / Design / UX / SEO / AEO (0–10 each), auto-fixes anything below 7, and shows you the score report.
- Commit — runs the pre-commit checks (prettier + lint + type-check); a failure blocks the commit until fixed.
- Push + PR — pushes the branch and opens a PR against
main, which triggers CI (lint / type-check / build, broken-link check).
Just like the web builder, an admin then reviews and merges the PR, and the page goes live automatically.
For maintaining the design system and components.
git clone https://github.com/pingcap-inc/website-launchpad.git
cd website-launchpad
pnpm install
pnpm devOther commands: pnpm build · pnpm lint · pnpm type-check
src/
app/ Next.js routes + sitemap.ts
components/ ui/ and sections/
lib/ schema.ts + gtm.tsx
styles/ globals.css
.ai/
page-types/ generation specs by page type
skills/
design-system/
seo/
quick-setup/
context/brand.md
- Pre-commit (Husky):
lint-staged(prettier + title-case check) ->pnpm lint->pnpm type-check - PR (GitHub Actions):
ci.yml— lint / type-check / build onsrc/**changesbroken-links.yml— link check on changedsrc/app/**/*.tsx
- Push to
main:deploy.yml - Manual (workflow_dispatch):
lighthouse-ci.yml,score-pages.yml
- Colors: Tailwind tokens only, no hardcoded hex
- Font weight: use
font-bold, notfont-semibold - Images: use
next/image - Links:
<Link>for internal routes,<a>for external - Analytics: use
@/lib/gtm, no rawdataLayer.push() - Schema: use
buildPageSchema(), no raw JSON-LD - SEO constants:
siteName: 'TiDB',twitter.site: '@PingCAP' - Canonical:
https://www.pingcap.com/[path]/
- Full generation and review workflow:
CLAUDE.md - Component rules:
.ai/skills/design-system/components.md - SEO rules:
.ai/skills/seo/SKILL.md