Public landing page for the Converge framework.
Deployed to https://converge.dev via Cloudflare Pages.
- Framework: Astro 6 (static output)
- Styling: Tailwind CSS 4
- Adapter:
@astrojs/cloudflare(enabled whenCLOUDFLARE_ADAPTER=1) - Content: MDX for blog posts; JSON for brand/SEO config
- Icons:
astro-icon+ Lucide - Motion: GSAP + Lenis (smooth scroll); CSS keyframes for the home-page DAG animation
pnpm install
pnpm dev # → http://localhost:4321pnpm check # astro check (typecheck + diagnostics)
pnpm build # static build to dist/
pnpm preview # serve dist/ locallysrc/
├── pages/
│ ├── index.astro # Home (10 home-page sections)
│ ├── blog/ # Blog index + [slug] dynamic route
│ ├── og/[slug].png.ts # Dynamic OG images
│ ├── rss.xml.ts
│ └── 404.astro
├── layouts/ # MainLayout, Head, Header, Footer
├── components/
│ ├── layout/ # Header, Footer, Container, Section, Grid
│ ├── sections/ # Home-page sections (Hero, FeatureGrid, …)
│ ├── ui/ # Button, Card, Badge, Pill, Icon, CodeBlock
│ └── animations/
├── styles/ # globals.css, tokens.css, typography.css, animations.css
├── icons/ # Inline SVG assets (logo, journey mark)
├── content/
│ └── blog/ # MDX posts
└── .content/ # JSON config (NOT shipped at runtime)
├── brand.json # Single source of truth for name, URLs, palette, voice
├── seo.json # Per-page title/description/OG-image
└── sections/ # Per-section design/spec docs (internal scratch)
Every component that needs the npm package name, GitHub URL, version, or doc/example base URL must read from brand.json rather than hardcoding the value. The shipping fields:
package— npm package name (@openplaybooks/converge)version— current CLI version (keep in sync with thepackages/cli/package.jsonin the converge repo)github— repo URLnpm— npm package URLdocsBase—https://github.com/openplaybooks-dev/converge/blob/main/docsexamplesBase—https://github.com/openplaybooks-dev/converge/tree/main/examples
See src/.content/brand.json → voice:
- Banned words:
revolutionary,next-generation,AI-native,game-changing - Preferred words:
concrete,shipped,measurable,verifiable - Tone: direct, technical, honest about trade-offs
Run this grep before merging copy changes:
grep -rn 'revolutionary\|next-generation\|AI-native\|game-changing' src/components src/.content src/contentIt should return zero matches.
Docs and examples are not in this repo. They live in the converge repo at:
- Docs: https://github.com/openplaybooks-dev/converge/tree/main/docs
- Examples: https://github.com/openplaybooks-dev/converge/tree/main/examples
Internal links from this landing site point to those GitHub paths. If you want docs to render on converge.dev in the future, add a src/content/docs/ directory and re-enable Starlight in astro.config.mjs (the integration was removed because there was no content to render).
Cloudflare Pages picks up dist/ after a build with the adapter enabled:
CLOUDFLARE_ADAPTER=1 pnpm build
wrangler pages deploy distwrangler.toml is configured for the converge-dev project. Wrangler reads the deploy token from the environment.
This landing page is itself a Converge project — see .converge/ for skills and (eventually) playbooks. Run converge add --from-example hello-world to see what a playbook looks like.
MIT — see LICENSE.