Live demo of the Whirlwind template, as shippedStripe test mode: card 4242 4242 4242 4242, any future date, any CVCGet Whirlwind →

Site Config

Editing config/site.js to rename, re-brand, or adjust the app.

One file for the words

config/site.js holds the name, domain, hero, feature list, pricing plans, FAQ and footer links. The landing page, blog and emails read from it, so renaming the product is one edit.
// config/site.js (abridged)
const siteConfig = {
  name: "Your AI Product",
  domainName: "yourapp.com",
  email: "hello@yourapp.com",

  hero: {
    title: "Build your AI product",
    highlight: "faster",
    subtitle: "...",
    primaryCta: "Get started",
    primaryCtaHref: "#pricing",
  },

  features: [
    { icon: "✨", name: "Feature One", description: "..." },
  ],

  pricing: { plans: [ /* see Plans & Pricing */ ] },
  faq: [ { question: "...", answer: "..." } ],
};

With an agent

Describe your product to Claude Code, Cursor or OpenClaw and ask for the landing page copy. The contract files tell the agent this is the only file to edit for copy, so changes land here rather than in components.

Drift guard

npm run audit checks that the config still has the shape the components expect, so a renamed key fails locally instead of rendering an empty section.