Sibling repo separato da Sharkcode main. Stack diverso: React 19 + Vite 6 + Tailwind 4 + Framer Motion + pnpm + Supabase + FTP SiteGround.
Diferente del Sharkcode main repo (NON Astro + NON Sanity + NON CF Pages).
| Componente | Versione | Per cosa |
|---|---|---|
| Framework | React 19 + TypeScript strict | Single-page wedding sites |
| Build | Vite 6 | Dev server + build production |
| Package manager | pnpm monorepo (NON bun) | Workspace shared packages/wedding-core |
| CSS | Tailwind CSS 4 + @theme blocks per template | Brand customization per cliente |
| Animations | Framer Motion 12 | Scroll reveal + section transitions |
| Scroll | Lenis 1.3.18 | Premium scroll snap smooth |
| Forms | React Hook Form + Zod | RSVP form validation |
| Backend | Supabase | RSVP data + auth + database |
| Resend | Email confirmations RSVP | |
| Deploy templates | FTP SiteGround | node tools/ftp-deploy.mjs |
| Deploy dashboard | Vercel | Admin dashboard guests management |
| QA | Vitest + Playwright + Lighthouse CI | Visual regression + performance |
Production-ready (4) + draft (1). Tutti in ~/Code/Wedding-Templates/templates/ post-clone.
NO footer, content-first layout, Champagne Limousines + Lavonia Classy fonts, cream + olive palette.
Full @theme block con serif + script fonts, watercolor aesthetic (sage + terracotta + soft-yellow palette).
Multi-viewport polish (macbook13/laptop/tablet/mobile scripts), emoji-to-icon migration, latest production iteration, deep client revisions applied May 2026. 70+ commits Mar-May 2026. Vedi sezione "Esempio F&L" sotto per case study completo.
Sezioni TBD. Iterazione attiva.
Reference draft per pattern minimalist chic. NON usar come base, è incomplete.
Come duplicare + customizzare template per cliente nuovo Wedding. Vos decís a Claude, Claude esegue.
# Duplica template esistente (es. federica-lorenzo)
cp -r templates/federica-lorenzo templates/cliente-nuovo
# Update package.json (Claude lo fa)
cd templates/cliente-nuovo
# Change "name": "federica-lorenzo" → "name": "cliente-nuovo"
# Root pnpm workspace registra automáticamenteamente il nuovo template
cd ../..
pnpm install
| File | Cosa contiene | Tu o Claude |
|---|---|---|
src/styles/theme.css | Tailwind @theme block: palette OKLCH + fonts + spacing + animations | Claude (tu dici "verde menta + dorado") |
src/config/content.ts | Tutto testo cliente: nomi + data + venue + schedule + RSVP | Claude + Michel review IT (verbatim CLIENT DATA HANDLING) |
src/config/sections.ts | Quali sezioni mostrare + ordine + nav labels | Claude (tu dici "togliere RSVP, aggiungere Gifts") |
src/assets/ | Immagini cliente (hero + sections + logo + monogram + background) | Tu Canva + Claude integration |
.env.local | Supabase keys per RSVP test | Claude setup + Michel da credentials |
# Dev server (port 5173-5178)
pnpm --filter cliente-nuovo dev
# Build production
pnpm --filter cliente-nuovo build
# Type check
pnpm --filter cliente-nuovo type-check
# Deploy via FTP SiteGround
node tools/ftp-deploy.mjs
# QA tools
node tools/pixel-diff.mjs
node tools/verify-template.mjs
node tools/self-review.mjs
node tools/screenshot-matrix.mjs
Tailwind @theme block (NON CSS custom properties classic). Pattern Wedding-Templates specifico.
@theme {
--color-cream: #faf6ef;
--color-olive: #486851;
--color-terracotta: #c2734c;
--font-script: 'Great Vibes', cursive;
--font-serif: 'Cormorant Garamond', serif;
--font-body: 'Poppins', sans-serif;
}
@font-face {
font-family: 'Great Vibes';
src: url('../assets/fonts/great-vibes.ttf') format('truetype');
font-display: swap;
}
CSS Variables (per-template defaults in :root):
--text-xs through --text-hero-script, clamp() responsive)--space-xs through --space-2xl)--max-width, --nav-height, --gutter)--duration-fast, --duration-smooth, --duration-scroll)Images: .png source files + WebP conversion + lazy loading per section. Favicon per cliente generato via Python script (generate-favicon-fl.py). Responsive image optimization (responsive-images-lf.mjs).
config/content.ts. Adatto per static wedding sites; NON adatto per multi-client dashboard o editorial CMS.
Template più recente production (May 2026 active iteration). 70+ commits in 3 mesi. Esempio realistic di customization scope per cliente Wedding.
Quando lavori su cliente Wedding pair-mode con Michel + Claude:
Differenze chiave. Quando lavori Wedding-Templates recordá che NON è Sharkcode standard.
| Aspetto | Wedding-Templates | Sharkcode main |
|---|---|---|
| CMS | None (hardcoded content.ts) | Sanity + GROQ queries |
| Auth | Supabase anon (RSVP forms only) | OAuth + role-based admin |
| Compile scripts | None (no compile-*) | compile-brand, compile-legal, compile-pack-2-blocchi |
| Brand system | Per-template @theme Tailwind block | Centralized design tokens canonical |
| Deploy | FTP SiteGround + Vercel dashboard | Git + Cloudflare Pages auto-deploy |
| Testing | Vitest + Playwright visual | Full E2E + unit test suite |
| Analytics | None (RSVP counts only) | Counterscale + pixel tracking |
| i18n | None (Italian-only) | Multi-language support |
| Package manager | pnpm | bun |
| Framework | React 19 + Vite 6 | Astro + Tailwind |
Dopo setup MacBook done, primo hands-on Wedding-Templates.
# 1. Clone sibling repo
git clone <wedding-templates-url> ~/Code/Wedding-Templates
cd ~/Code/Wedding-Templates
# 2. Install dependencies
pnpm install
# 3. Copy env
cp .env.example .env
cp templates/maira-matteo-ita/.env.example templates/maira-matteo-ita/.env
# 4. Run a template dev server
pnpm dev:maira # Opens port 5173
# o
pnpm dev:giulia # Opens port 5177
# 5. Studio duplication workflow (esercizio Day 2-7)
# Copy federica-lorenzo/ → templates/cliente-nuovo-test/
# Edit content.ts, theme.css, assets/
# pnpm --filter cliente-nuovo-test dev
# 6. Deploy via FTP (solo quando cliente reale, NON test)
pnpm --filter cliente-nuovo build
node tools/ftp-deploy.mjs
federica-lorenzo en localhost para que pueda ver el sitio"