Notre stack — rien à cacher
Voici l'infrastructure exacte qui fait tourner ce site. Chaque choix est motivé, chaque outil a fait ses preuves. Les mêmes standards techniques pour tous nos clients.
Front-end framework
Écosystème mature, rendu concurrent pour des transitions fluides.
Sécurité à la compilation, refactoring serein, auto-documentation du code.
HMR instantané en dev. Depuis la v8, le bundle est produit par rolldown et minifié par oxc — esbuild a quitté l'arbre de dépendances.
API déclarative, routes chargées à la demande, compatible Suspense.
Style & Design System
Zero runtime, purge automatique, cohérence visuelle garantie par les tokens.
- shadcn/ui (nouvel onglet)Composants primitifs
Copiés dans le repo — pas de dépendance de lib fragile, code 100% maîtrisé.
- Radix UI (nouvel onglet)Primitives accessibles
ARIA correct dès l'installation, navigation clavier, piège de focus.
API déclarative, respect de prefers-reduced-motion, composition GPU.
Tree-shaken, style cohérent, 1500+ icônes maintenues.
Performance
- Prérendu — Chromium sans interfacev149.0HTML servi complet
Toutes les routes du site — pages de service, pages locales et les 37 études de cas du portfolio — sont rendues au build dans un Chromium sans interface. Auparavant le serveur renvoyait le même index.html vide pour toutes : les robots qui n'exécutent pas JavaScript ne voyaient que les métadonnées de l'accueil.
- web-vitalsv6.1Monitoring RUM
LCP, INP, CLS mesurés chez les vrais utilisateurs, envoyés à GA4.
- WOFF2 variable fontsTypographies
Outfit + Plus Jakarta Sans auto-hébergés, subset latin, font-display: optional.
- Découpage manuel des chunksCode splitting
Vendors séparés (react, motion, radix, pdf) → cache long terme optimal.
SEO & Données structurées
- @dr.pogodin/react-helmetv3.2Meta per-route
Title, description et Open Graph propres à chaque page.
- Schema.org JSON-LDDonnées structurées
Organization, LocalBusiness, Service, FAQPage, HowTo, BreadcrumbList, Article.
- llms.txtGEO optimization
Fichier dédié à l'indexation par ChatGPT, Claude, Perplexity, Gemini.
- Sitemap XMLCrawlabilité
Généré au build depuis les routes déclarées dans App.tsx — il ne peut pas prendre de retard sur le site.
Back-end & Data
Postgres managé, Auth, Storage, Edge Functions — open source.
- Brevo (nouvel onglet)Formulaire de contact
Reçoit les messages du formulaire de contact, relayés par une fonction serverless Vercel.
- Resend (nouvel onglet)Emails transactionnels
Achemine les devis PDF du configurateur, via une fonction Supabase. Pas de filtrage par IP côté API.
- Zodv4.4Validation runtime
Schémas typés partagés entre client et serveur, messages d'erreur français.
Infrastructure & CI/CD
- Vercel (nouvel onglet)Hébergement Edge
Déploiement au git-push, CDN mondial, HTTP/3, branches de prévisualisation.
- IONOS (nouvel onglet)Registrar & DNS
Domaines kayzen-lyon.com et .fr, zone DNS et messagerie.
- GitHubVersionning
Revue de code et historique complet — c'est lui qui alimente le changelog public.
- Service WorkerOffline-first
Cache stratégique des assets, page /offline.html de repli.
- Vitestv4.1Tests unitaires
Partage la configuration de Vite, donc les mêmes alias et le même pipeline qu'en production.
- Playwrightv1.62Tests E2E
Parcours critiques rejoués sur Chromium (bureau) et sur un profil mobile Pixel 7.
Sécurité & Conformité
- Content-Security-PolicyAnti-XSS
script-src sans 'unsafe-inline' : chaque script inline est autorisé par son empreinte SHA-256, vérifiée au build.
- HSTS preloadAnti-downgrade
max-age 2 ans, includeSubDomains, preload registry Chrome.
- Permissions-PolicyLeast privilege
Caméra, micro, USB, géolocalisation désactivés par défaut.
- RGPD by designVie privée
Consent Mode v2, refus par défaut, GA4 chargé après consentement explicite (sans GTM), sous-traitants nommés.
Outils internes
- ESLintv10.8Linting
Règles strictes, vérification des hooks, bloquant en CI.
- rollup-plugin-visualizerv7.0Bundle analyzer
Inspection graphique des chunks, détection des imports lourds.
- PostCSSv8.5CSS build
Autoprefixer, compatibilité des navigateurs modernes (es2020+ ciblé).
- npmGestionnaire de paquets
package-lock.json fait foi, et c'est lui que Vercel installe au déploiement.
Cette page est vivante
Nous mettons à jour cette liste à chaque évolution majeure. Consultez notre changelog public pour l'historique complet des itérations, ou notre design system pour les tokens et composants.
Discuter de votre infrastructure