Landing site
Brand and navigation
Change brand copy, URLs, pricing and SEO defaults in src/config/site.ts, and edit the header and footer links in src/config/navigation.ts.
Brand, copy and links
src/config/site.ts is the single source of truth for brand copy, URLs and SEO defaults. It is
imported by astro.config.mjs, the layout and the components, so changing a value here flows
everywhere. Edit it here, not inline in components.
The exported siteConfig object is grouped by concern:
| Group | What it holds |
|---|---|
company | name, legalName, contact email |
author | The human behind the product (name, title, URL, initials); feeds the schema.org graph |
links | appUrl (live demo SPA), apiUrl (API host), repoUrl (source), buyUrl (checkout) |
pricing | amount, currency, display, license, guarantee; flows to the CTAs and pricing card |
site | name, title, description, url, ogImage, keywords |
seo | Default title, description and twitterCard used as a fallback on every page |
Two values you will almost certainly change: point links.buyUrl at your payment provider’s hosted
checkout (Stripe, Lemon Squeezy, Paddle), and set pricing to your terms. The price is read in one
place and reused by every CTA and the schema.org Offer.
Navigation and footer
Both menus are defined in src/config/navigation.ts: mainNav is the header links and footerNav
is the footer’s grouped columns. Header.astro and Footer.astro import and render those arrays, so
you edit links in one place rather than in the markup. Links that point at the product (the demo, the
API reference, GitHub, the contact email) are built from siteConfig, so updating a value in
site.ts updates them too. The mobile menu is driven entirely by the CSS :target selector, so there
is no JavaScript to touch when you add or remove a link.
Checklist
- Change brand copy, links and pricing in
src/config/site.ts, not inline in components. - Point
links.buyUrlat your hosted checkout and setpricingto your commercial terms. - Add or remove header and footer links in
src/config/navigation.ts; no JavaScript change is needed.