GoShipped
Build

🌐 Customize the Landing Page

Turn the starter marketing site inside GoShipped into your product website. Copy, sections, pricing, and legal β€” not the public docs you are reading now.

Turn the starter website into your product's website.

This is the marketing site bundled in the GoShipped product (apps/web), not this documentation site.

Public routes live in a route group so you can rebrand β€” or delete β€” the website without touching chat.

Start with the part you actually want to change: what the site says.

starter.config.json          name, logo, colors
apps/web/src/config/marketing.ts   what the site says
apps/web/src/config/legal.ts       Privacy and Terms

Two files, two jobs

Product identity stays in starter.config.json so the app and the website stay aligned:

  • app.name / app.description
  • branding.logo, branding.favicon, branding.colors
  • support.email

Everything the public site says lives in apps/web/src/config/marketing.ts. That is the file to open first.

Legal page bodies are apps/web/src/config/legal.ts. They are starter templates, not legal advice.

I want to change…

I want to change…Look here
Product name, logo, colors, faviconstarter.config.json
Hero headline, description, CTAsmarketingConfig.hero.*
Hero screenshothero.visual ("image" / "placeholder" / "none") + hero.imageSrc in apps/web/public/
Nav linksnavLinks (Docs link appears only if documentationHref is set)
Feature cardsfeatures.primary / features.secondary
How it workshowItWorks.steps
Product screenshotsproductShowcase.items
Social proof / testimonialssocialProof / testimonials, or set sections.* to false
Pricing chrome (titles, fallback)pricing.* in marketing.ts
Live plan names, bullets, pricesapps/api/app/plans/config.py + Stripe Prices
FAQfaq.items
Bottom CTActa.*
Footer taglinefooter.tagline
Social linkssocialLinks (empty = hidden)
Company legal identitycompanyName, legalName, companyAddress, jurisdiction, legalEmail
Privacy / Terms copyapps/web/src/config/legal.ts
Public origin (canonical, sitemap)siteUrl or NEXT_PUBLIC_APP_URL
Metadata titlesapps/web/src/lib/marketing/metadata.ts

Hide a landing section without deleting copy:

sections: {
  socialProof: false,
  testimonials: false,
  pricing: true,
  // …
}

/pricing still exists even if you hide pricing on /. Set sections.pricing to false only hides it on the landing page.

Pricing on the website

The marketing pricing section prefers live data from GET /api/v1/billing/plans β€” the same catalog Settings uses.

LayerWhere
Plan names, feature bullets, entitlementsapps/api/app/plans/config.py
Dollar amountsStripe Prices (STRIPE_PRICE_PRO_MONTHLY / YEARLY)
Fallback if the API is downmarketingConfig.pricing.fallbackPlans

Keep the fallback aligned with the Python catalog. Changing only marketing.ts will not change what Checkout charges. See Payments.

Routes and layout

PathSource
/apps/web/src/app/(marketing)/page.tsx
/pricing(marketing)/pricing/page.tsx
/privacy, /termslegal.ts
/sitemap.xml, /robots.txtgenerated from siteUrl / NEXT_PUBLIC_APP_URL

Section components live in apps/web/src/components/marketing/. Restyle a block there if config is not enough.

Authenticated visitors see Open app β†’ /chat instead of Get started.

Remove GoShipped

The shipped app name is already My AI Assistant. Hunt leftover starter/demo content before launch:

rg -n "GoShipped|Your Company|your-app.example|lorem|Acme" apps/web/src/config apps/web/src/components/marketing apps/api/app/onboarding

Replace or delete:

AreaWhat to scrub
Marketing copyHero, features, FAQ, testimonials, social-proof logos in marketing.ts
Legal placeholdersCompany name, address, jurisdiction, and bracket tokens in legal.ts
Brand filesapps/web/public/logo.svg, logo-dark.svg, favicon.svg
Unused starter SVGsnext.svg, vercel.svg, and similar in public/
ThemeAccent #10a37f in branding.colors
Chat stringsEmpty state, β€œUpgrade to Pro” β€” see Customize the Frontend
Onboardingapps/api/app/onboarding/config.py

To remove the marketing site entirely: delete src/app/(marketing)/, src/components/marketing/, src/config/marketing.ts, src/config/legal.ts, and src/lib/marketing/, then add a root src/app/page.tsx that redirects to /chat or /login.

Pre-launch checklist

  • Identity in starter.config.json (name, logo, colors, support email)
  • Rewrite marketing.ts. Hide testimonials and social proof until they are real.
  • Fill legal identity; rewrite processor / AI / cookies / refund sections in legal.ts
  • Align live billing with fallbackPlans
  • Set legalLastUpdated and have counsel review
  • Set NEXT_PUBLIC_APP_URL / siteUrl to the real origin
  • Confirm /privacy and /terms footer links

SEO

Titles and descriptions come from lib/marketing/metadata.ts. Canonical URLs and the sitemap use siteUrl or NEXT_PUBLIC_APP_URL. There is no separate Open Graph image in the product marketing site β€” set one in metadata if you need it.

On this page