🎯 Points Clés
- ✓ Score PageSpeed de 95-98/100 obtenu avec Vite + React optimisé
- ✓ Railway + Cloudflare : combo gagnant pour hébergement performant à $10/mois
- ✓ Code splitting et lazy loading : LCP réduit de 2.8s à 1.1s
- ✓ Bundle initial de seulement 93KB (vs 250KB pour Next.js)
- ✓ Claude Code comme force multiplier : 23h au lieu de 3-4 jours
Le défi
Comme beaucoup de marketeurs, j'ai une liste longue comme le bras de side-projects à moitié commencés, jamais terminés.
Et comme beaucoup, je me cogne à la même frustration :
j'ai des idées, mais je ne suis pas dev. Alors je m'arrête à la maquette.
Ou pire : je vais sur Webflow, Framer, ou WordPress… et je perds le contrôle.
Ça rame. C'est lourd. Et ce n'est jamais vraiment prêt pour la prod.
Cette fois, j'ai voulu tester autre chose.
Un défi perso : créer un vrai site, rapide, propre, sans plugin magique, et sans l'aide d'un développeur. En moins de 24h.
Avec Claude Code comme seul copilote.
Poser un cadre clair
Je ne voulais pas partir dans tous les sens comme d'habitude.
Donc avant même d'ouvrir un éditeur, j'ai pris le temps de rédiger ce que je voulais.
Pas une stack. Pas une techno à la mode.
Juste des besoins fonctionnels concrets :
- Un site simple, avec quelques pages statiques + un blog
- Un rendu clean et responsive
- Un score PageSpeed supérieur à 90 sur mobile
- Un SEO technique propre : meta, JSON-LD, sitemap, robots.txt
- Un backend léger (pas de CMS)
- Un hébergement facile à déployer, à petit prix
- Et surtout : un projet que je comprends de A à Z
Ce cadrage m'a évité de faire fausse route. C'est aussi ce qui a permis à Claude d'être hyper pertinent dans ses réponses.
Claude Code, le partenaire qui débloque
Je suis arrivé avec un prompt clair :
``
Crée-moi une app React + TypeScript avec Vite, Express en backend,
routing simple, pages statiques, gestion de contenu en markdown,
base PostgreSQL, Tailwind CSS pour le style, et hébergement sur Railway.
`
En quelques secondes, j'avais :
- tous les fichiers bien organisés
- une base backend fonctionnelle
- un frontend responsive stylé avec Tailwind
- les scripts de déploiement prêts
Et surtout : zéro friction. Là où je passais habituellement des heures à configurer l'environnement, Claude m'a propulsé dans la création réelle du projet dès les premières minutes.
Une stack choisie par le besoin
Je n'ai pas « choisi une stack ». Je suis parti de mes contraintes.
Claude a proposé la meilleure combinaison technique pour y répondre.
Voici ce qu'on a retenu :
- Frontend : React 18, Vite, Tailwind CSS, Wouter, MDX
- Backend : Express.js avec PostgreSQL, Drizzle ORM
- Infra : Railway pour le fullstack, Cloudflare pour la rapidité et le cache
- Analytics : Umami (léger, sans cookies, RGPD friendly)
Pas d'extra. Pas de framework surdimensionné.
Juste ce qu'il faut.
Ce que Claude a réellement apporté
Ce n'est pas "juste de l'IA qui code".
Claude a :
- préparé les composants UI (cards, modals, boutons) avec accessibilité
- généré la base de données, les modèles, les CRUD
- configuré le SEO (helmet, sitemap, JSON-LD, robots.txt)
- optimisé le LCP (hero image en WebP, preload, lazy loading)
- nettoyé les imports, réduit le JS initial, évité les rerenders inutiles
Et tout ça, pendant que je continuais à itérer sur le contenu, l'UX ou les animations.
Comment atteindre 95+ PageSpeed ?
1. Code Splitting Agressif
Avant (bundle monolithique) :
`javascript
// Tout chargé d'un coup = 450KB JavaScript
`
Après (lazy loading) :
`javascript
// Chargement à la demande = 85KB initial
const Home = lazy(() => import('./pages/Home'));
const About = lazy(() => import('./pages/About'));
`
Impact : LCP réduit de 2.8s à 1.1s.
2. Images Optimisées
`jsx
src="/hero.webp"
loading="lazy"
decoding="async"
width="800"
height="600"
/>
`
Toutes les images converties en WebP (économie de 60% vs PNG/JPEG).
3. CSS Purgé avec Tailwind
`javascript
// tailwind.config.js
export default {
content: ['./client/*/.{ts,tsx}'],
// Résultat : 8KB CSS vs 3.5MB en dev
}
`
Avant : 450KB de CSS
Après : 8KB de CSS (94% de réduction)
4. Pas de Scripts Tiers Bloquants
Umami Analytics :
- Ne bloque jamais le rendering
- Pèse 2KB (vs 45KB pour Google Analytics)
- Pas de cookies = pas de banner RGPD
Railway + Cloudflare : Le Combo Gagnant
Pourquoi Railway ?
`bash
# Déploiement en 2 minutes chrono
$ git push origin main
# Railway détecte automatiquement tout
`
Ce que j'adore chez Railway :
- ✅ Déploiement Git automatique (push to deploy)
- ✅ PostgreSQL inclus
- ✅ Logs en temps réel super clean
- ✅ Scale horizontal automatique
- ✅ $5/mois pour démarrer
Cloudflare : La Couche de Vitesse
Railway héberge l'app, mais Cloudflare met tout en cache :
1. Setup DNS : Pointer le domaine vers Railway via Cloudflare
2. Page Rules : Cache everything pour les assets
3. Auto Minify : HTML, CSS, JS automatiquement minifiés
4. Brotli Compression : Activé par défaut
5. HTTP/3 : Latence réduite de 30%
Résultat : TTFB de 180ms depuis la France.
`
Sans Cloudflare : 850ms TTFB
Avec Cloudflare : 180ms TTFB (-78%)
`
Et les résultats ?
Performance
- PageSpeed Desktop : 98/100
- PageSpeed Mobile : 95/100
- LCP : 1.1s (✅ Good < 2.5s)
- INP : 45ms (✅ Good < 200ms)
- CLS : 0.02 (✅ Good < 0.1)
- FCP : 0.8s (✅ Good < 1.8s)
- TTFB : 180ms (✅ Good < 600ms)
Bundle Size
- JS gzipped : 85KB
- CSS purgé : 8KB
- Build time : 12s
Coût mensuel
- Railway + domaine + Cloudflare : ~10€/mois
Pour comparaison :
- Next.js starter : ~250KB
- Gatsby starter : ~180KB
- Mon site : 93KB initial load
Ce que j'ai préféré
Le sentiment de contrôle.
Pas de dette technique.
Pas de plugin qui pète.
Pas de dépendance à une stack obscure.
Tout est modifiable. Tout est compréhensible.
Et je peux continuer à itérer seul.
Le fait d'envoyer des screens et de modifier rapidement.
Le multi-terminal est ultra-efficace (j'en avais 3 ouverts en parallèle) pour travailler simultanément sur différentes parties du projet.
Les limites
- Claude Code utilise rapidement ses crédits (j'ai dû passer par l'API payante pour ne pas être bloqué)
- Il faut structurer ses prompts avec précision. Sinon, les réponses peuvent être vagues ou inutiles.
Ce que j'ai appris
1. Moins de JavaScript = Plus de Performance
J'ai résisté à la tentation d'ajouter :
- ❌ Framer Motion (animations lourdes)
- ❌ Moment.js (98KB pour des dates !)
- ❌ Lodash entier
Alternatives légères :
- ✅ CSS animations natives
- ✅ date-fns (2KB) au lieu de Moment
- ✅ Vanilla JS pour les utilities
2. Railway > Vercel pour Full-Stack
| Feature | Railway | Vercel |
|---------|---------|--------|
| PostgreSQL inclus | ✅ | ❌ |
| WebSockets | ✅ | ❌ |
| Prix /mois | $5 | $20+ |
| Deploy time | 2min | 1min |
3. Cloudflare est Gratuit et Puissant
Fonctionnalités gratuites :
- CDN global illimité
- DDoS protection
- SSL auto
- Analytics basique
- Cache API responses
ROI : $0/mois pour des perfs équivalentes à un CDN à $50/mois.
4. Claude Code = Force Multiplier
Ce qui m'aurait pris 3-4 jours seul, fait en 23h avec Claude Code.
Le secret : être précis dans les prompts.
❌ Mauvais prompt : "Crée un bouton"
✅ Bon prompt : "Crée un Button component avec TypeScript, variants (primary, secondary, ghost), sizes (sm, md, lg), loading state, disabled state, et full accessibility (ARIA)"
Stack Technique Complète
`json
{
"frontend": {
"framework": "React 18",
"bundler": "Vite 5",
"language": "TypeScript",
"styling": "Tailwind CSS 4",
"routing": "Wouter (1.6KB)",
"content": "MDX"
},
"backend": {
"runtime": "Node.js 22",
"framework": "Express.js",
"database": "PostgreSQL",
"orm": "Drizzle ORM"
},
"infrastructure": {
"hosting": "Railway",
"cdn": "Cloudflare",
"analytics": "Umami"
}
}
``
Conclusion
Je suis marketeur. Et pourtant, en moins de 24h, j'ai créé un site propre, performant, déployé, prêt pour la prod.
Et ce que j'ai ressenti, ce n'est pas juste de la fierté.
C'est une forme de libération créative.
Si toi aussi tu veux sortir du cycle maquette → dépendance dev → friction → abandon :
teste Claude Code.
Mais commence par un vrai besoin.
Le reste, il s'en charge.
Questions ou remarques ? N'hésite pas à me contacter sur LinkedIn ou X !