Our stack — nothing to hide
Here is the exact infrastructure that runs this website. Every choice is deliberate, every tool is proven. The same technical standards for all our clients.
Front-end framework
Mature ecosystem, concurrent rendering for smooth transitions.
Compile-time safety, stress-free refactoring, self-documenting code.
Instant HMR in development. Since v8, the bundle is produced by rolldown and minified by oxc — esbuild has left the dependency tree.
Declarative API, routes loaded on demand, Suspense-compatible.
Styling & Design System
Zero runtime, automatic purging, visual consistency guaranteed by tokens.
- shadcn/ui (opens in a new tab)Primitive components
Copied into the repo — no fragile library dependency, 100% of the code under our control.
- Radix UI (opens in a new tab)Accessible primitives
Correct ARIA out of the box, keyboard navigation, focus trapping.
Declarative API, respects prefers-reduced-motion, GPU compositing.
Tree-shaken, consistent style, 1,500+ maintained icons.
Performance
- Prerendering — headless Chromiumv149.0Fully rendered HTML
Every route on the site — service pages, local pages and the 37 portfolio case studies — is rendered at build time in headless Chromium. Previously the server returned the same empty index.html for all of them: crawlers that don't execute JavaScript only saw the home page's metadata.
- web-vitalsv6.1RUM monitoring
LCP, INP and CLS measured on real users, sent to GA4.
- WOFF2 variable fontsTypefaces
Self-hosted Outfit + Plus Jakarta Sans, Latin subset, font-display: optional.
- Manual chunk splittingCode splitting
Separate vendor chunks (react, motion, radix, pdf) → optimal long-term caching.
SEO & Structured data
- @dr.pogodin/react-helmetv3.2Per-route meta
Title, description and Open Graph specific to each page.
- Schema.org JSON-LDStructured data
Organization, LocalBusiness, Service, FAQPage, HowTo, BreadcrumbList, Article.
- llms.txtGEO optimisation
A file dedicated to indexing by ChatGPT, Claude, Perplexity and Gemini.
- XML sitemapCrawlability
Generated at build time from the routes declared in App.tsx — it can never fall behind the site.
Back-end & Data
Managed Postgres, Auth, Storage, Edge Functions — open source.
- Brevo (opens in a new tab)Contact form
Receives contact form messages, relayed by a Vercel serverless function.
- Resend (opens in a new tab)Transactional email
Delivers the configurator's PDF quotes via a Supabase function. No IP filtering on the API side.
- Zodv4.4Runtime validation
Typed schemas shared between client and server, French-language error messages.
Infrastructure & CI/CD
- Vercel (opens in a new tab)Edge hosting
Deploy on git push, global CDN, HTTP/3, preview branches.
- IONOS (opens in a new tab)Registrar & DNS
kayzen-lyon.com and .fr domains, DNS zone and email.
- GitHubVersion control
Code review and full history — it is what feeds the public changelog.
- Service WorkerOffline-first
Strategic asset caching, /offline.html fallback page.
- Vitestv4.1Unit testing
Shares Vite's configuration, so the same aliases and the same pipeline as in production.
- Playwrightv1.62E2E testing
Critical user journeys replayed on Chromium (desktop) and on a Pixel 7 mobile profile.
Security & Compliance
- Content-Security-PolicyAnti-XSS
script-src without 'unsafe-inline': every inline script is allowed by its SHA-256 hash, checked at build time.
- HSTS preloadAnti-downgrade
2-year max-age, includeSubDomains, Chrome preload registry.
- Permissions-PolicyLeast privilege
Camera, microphone, USB and geolocation disabled by default.
- GDPR by designPrivacy
Consent Mode v2, denied by default, GA4 loaded only after explicit consent (no GTM), named data processors.
Internal tooling
- ESLintv10.8Linting
Strict rules, hooks checks, blocking in CI.
- rollup-plugin-visualizerv7.0Bundle analyser
Visual inspection of chunks, detection of heavy imports.
- PostCSSv8.5CSS build
Autoprefixer, compatibility with modern browsers (es2020+ targeted).
- npmPackage manager
package-lock.json is the source of truth, and it is what Vercel installs on deployment.
This page is a living document
We update this list with every major change. See our public changelog for the full history of iterations, or our design system for tokens and components.
Discuss your infrastructure