Landing page and branding
Change the words, colours, icons and sections of your landing page.
Words
Every word on the landing page lives in src/content/landing.ts, one object per section:
| Key | Section |
|---|---|
hero | Headline, sub-headline and buttons |
preview | The mock product screen beside the hero, with sample data |
problem | The problem your product solves |
features | The feature grid, each with an icon |
steps | "How it works" |
tagline | The large statement before pricing |
testimonials | Customer quotes. Empty by default: only add real ones |
pricing | Pricing heading. The cards themselves come from plans in src/config.ts |
faq | Questions and answers |
signedInCta | Replaces "Start free" for people who are already signed in |
The site name, tagline and description used in page titles and share previews are in siteConfig in src/config.ts.
Brand colour
The brand colour is the --primary token in src/app/globals.css. Set it in both places:
:root, .light {
--primary: #2563eb;
--primary-foreground: #ffffff;
}
.dark {
--primary: #3b82f6;
--primary-foreground: #ffffff;
}--primary-foreground is the text colour on top of it. Keep at least 4.5:1 contrast between the two (check with any contrast checker), or button text becomes hard to read. For a light brand colour such as yellow, use dark text.
Feature icons
Each feature has an icon name. Available: lightning, bell, chart, shield, plug, users, clock, sparkle, lock, globe, envelope, receipt.
To add one, for example a rocket from Phosphor Icons:
- Add
"rocket"to theIconNametype insrc/content/landing.ts. - In
src/components/landing/sections.tsx, import it from@phosphor-icons/react/dist/ssrand add it to theiconsmap:
import { RocketLaunch } from '@phosphor-icons/react/dist/ssr';
const icons = {
// …
rocket: RocketLaunch,
};Layout
The layout is in src/components/landing/sections.tsx. To remove a section, delete its component from src/app/page.tsx. Marketing text uses named styles from globals.css (heading-1, body-3, button-md…), so new sections match.
Always light
The landing page, blog and legal pages always use the light theme, whatever the visitor's system setting. They're wrapped in LightPage (src/components/landing/light-page.tsx). Keep new marketing pages inside it. The dashboard follows the visitor's theme.
Legal pages
src/app/(legal)/terms and privacy are templates. Replace every [bracketed] part with your details, including your refund policy, and have them reviewed for the countries you sell in.
The "Acme" banner
While siteConfig.name is still "Acme", a banner reminds you (in development only) to customise the site. It goes away once you change the name.