Marketing template
templates/marketing — a local-business marketing site starter (salon, trades, service, product), genericized from a real shipped client site.
Stack
A thin apps/web app built on the shared house style (Next.js 16 App Router, React 19, TypeScript, Tailwind v4, shadcn/ui), plus two internal primitives:
@template/ui— shared UI primitives.@template/mock-data— the typed content-adapter seam: business data lives behind an interface so the source can later swap to Sanity or Supabase without touching components.
Section vocabulary
Nav, Hero, About, HowItWorks/Services, Packages, Testimonials, FAQ, FinalCTA, Contact, Footer — plus a SectionReveal scroll primitive used across sections.
Tokens
23 tokens control brand identity, contact info, and the full color/font system. The highlights:
| Token | Prompt | Default |
|---|---|---|
__BRAND_NAME__ | Business name | Acme Studio |
__BRAND_TAGLINE__ | Hero headline | Beautifully simple, done for you. |
__PHONE__ | Business phone number | (555) 010-2020 |
__EMAIL__ | Business contact email | hello@cates.works |
__SERVICE_AREA__ | City/region served | Sunnyvale, CA |
__SITE_URL__ | Production site URL | https://example.com |
__FONT_SERIF__ / __FONT_SANS__ | Google Font identifiers for headings/body | Cormorant_Garamond / DM_Sans |
__COLOR_PRIMARY__ and 12 related color tokens | Full palette (body, surface, primary, text, accent, success, border) | — |
Modules
All off by default except a basic contact form, which ships on:
| Module | Description | Default |
|---|---|---|
booking | Multi-step booking wizard | off |
commerce | Product catalog + cart | off |
sanity | Sanity CMS content source | off |
campaign | Promo/campaign engine | off |
Scaffold
node bin/create-client.mjs acme-salon \
--template marketing \
--out ../acme/02-repos/acme-salon
See CLI Reference for the full flag list.