# TEMPLATE.md: Personal brand

You are an AI developer building a complete website for my client. Template: **Personal brand**. The universal one-pager: a clear message, what you do, selected work, contact. The default template.

## What you are building

A Next.js (App Router) site assembled from production-ready LudusVibe UI sections. Sections install through the shadcn registry and automatically follow the project's brand tokens.

## Steps

### 1. Project and registry

If the project does not exist yet: `npx create-next-app@latest my-site --ts --tailwind --app`, then `npx shadcn@latest init`.
Add the registry to `components.json`:

```json
"registries": {
  "@ludusvibe": "https://ui.ludusvibe.com/r/{name}.json"
}
```

### 2. Install the template's sections

```bash
npx shadcn@latest add @ludusvibe/navbar-01 @ludusvibe/hero-14 @ludusvibe/services-02 @ludusvibe/gallery-01 @ludusvibe/testimonials-01 @ludusvibe/cta-05 @ludusvibe/contact-01 @ludusvibe/footer-02
```

### 3. Assemble the page in this order

1. `navbar-01`  (Navbar 01: Floating Pill)
   Great for: Modern SaaS, startups, portfolios and product sites that want a light, airy look.
2. `hero-14`  (Hero 14: Fullscreen video masthead)
   Great for: Personal brands: therapists, coaches, speakers, consultants.
3. `services-02`  (Services 02: Practice Cards)
   Great for: Law firms, accountants, medical practices and professional services.
4. `gallery-01`  (Gallery 01: Project Grid)
   Great for: Architects, interior designers, contractors, photographers and studios.
5. `testimonials-01`  (Testimonials 01: Bento Quotes)
   Great for: Services, SaaS and local businesses with several strong client quotes.
6. `cta-05`  (CTA 05: Conversion)
   Great for: Landing pages that need one last decision point.
7. `contact-01`  (Contact 01: Form & Map)
   Great for: Any business with an office or premises to visit.
8. `footer-02`  (Footer 02: Minimal Watermark)
   Great for: Portfolios, studios and brands with a strong wordmark.

In `app/page.tsx`:

```tsx
import { Navbar01 } from "@/components/sections/navbar-01"
import { Hero14 } from "@/components/sections/hero-14"
import { Services02 } from "@/components/sections/services-02"
import { Gallery01 } from "@/components/sections/gallery-01"
import { Testimonials01 } from "@/components/sections/testimonials-01"
import { Cta05 } from "@/components/sections/cta-05"
import { Contact01 } from "@/components/sections/contact-01"
import { Footer02 } from "@/components/sections/footer-02"

export default function Page() {
  return (
    <>
      <Navbar01 />
      <Hero14 />
      <Services02 />
      <Gallery01 />
      <Testimonials01 />
      <Cta05 />
      <Contact01 />
      <Footer02 />
    </>
  )
}
```

Pass `as="h1"` to the first hero section.

### 4. Branding (ask the client before choosing)

All colors live as CSS tokens in `app/globals.css`. Change ONLY tokens, never colors inside components:
- `--primary` and `--primary-foreground`: the brand color (in both themes, :root and .dark)
- `--chart-1` through `--chart-5`: accent colors for charts and visual elements
- Font: swap the font in `app/layout.tsx` (next/font)

### 5. Content

Every section takes its content through props (headings, copy, items, images, CTAs). Replace the default content with the client's real data: names, services, prices, photos, contact, social links.

Copy rules:
- Sales-driven and concrete: benefits first, numbers where they exist
- NEVER use the em dash (—): use a colon, a comma, or restructure the sentence
- Images: replace the Unsplash defaults with the client's photography wherever available

### 6. Verify

- The site works in light and dark themes
- Mobile at 375px with no horizontal scroll
- Every link and CTA points to a real destination (phone, Instagram, form)
