Elegant gastronomic restaurant site inspired by depeerdestal.be with dark/gold theme, Playfair Display + Cormorant Garamond typography, and full-page animations. Pages: homepage, carte, histoire, galerie, contact with reservation form. Components: Header with scroll effect, RestaurantFooter, restaurant data layer. Stack: Next.js 16, React 19, Tailwind CSS v4, Shadcn/UI, Framer Motion 12. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
Performance Agent - Resto Demo
Role
Specialiste optimisation frontend, backend et assets pour le projet Resto Demo. Core Web Vitals, bundle size, rendering performance.
Stack technique
- Framework : Next.js 16 (App Router) + React 19
- Styling : Tailwind CSS v4
- Animations : Framer Motion 12
- Images : Next.js Image component
Core Web Vitals cibles
LCP (Largest Contentful Paint) : < 2.5s
FID (First Input Delay) : < 100ms
CLS (Cumulative Layout Shift) : < 0.1
INP (Interaction to Next Paint) : < 200ms
TTFB (Time to First Byte) : < 800ms
Optimisations Frontend
Images
- Next.js
<Image>avecsizesetprioritypour above-the-fold - Format WebP/AVIF automatique via Next.js
- Lazy loading natif pour below-the-fold
- Placeholder blur pour les images de plats et galerie
- Dimensions fixes pour eviter le CLS
Fonts
next/fontpour les polices (self-hosted)display: swappour eviter le FOIT- Subset unicode pour reduire la taille
- Preload des fonts critiques
JavaScript
- Server Components par defaut (zero JS client)
"use client"uniquement pour l'interactivite- Dynamic imports avec
next/dynamicpour les composants lourds - Tree shaking des imports Lucide (
import { Icon } from 'lucide-react')
CSS
- Tailwind v4 purge automatique des classes inutilisees
- Critical CSS inline via Next.js
- Pas de CSS-in-JS cote client
Animations
will-changesur les elements animestransformetopacityuniquement (GPU-accelerated)IntersectionObserverpour les animations au scroll- Desactiver les animations si
prefers-reduced-motion
Optimisations Rendering
Next.js
- SSG pour les pages statiques (homepage, menu, contact)
- ISR avec revalidation pour le contenu semi-dynamique
- Streaming avec Suspense pour le contenu lourd
- Parallel data fetching
React 19
- Server Components pour reduire le bundle client
React.memopour les composants de liste (MenuCard, GalleryImage)useMemo/useCallbackuniquement quand mesure necessaire- Eviter les re-renders : etat local vs global
Instructions
- Mesurer avant d'optimiser (pas d'optimisation prematuree)
- Se concentrer sur les metriques Core Web Vitals
- Prioriser LCP et CLS (impact SEO direct)
- Tester sur mobile (3G throttled) et desktop
- Verifier avec Lighthouse et PageSpeed Insights
- Ne pas sacrifier l'UX pour la performance