Sur les 3 derniers projets clients récupérés en audit, 100% présentaient des failles de sécurité critiques : variables d'environnement exposées, données utilisateurs accessibles sans authentification, validation serveur inexistante. Le problème n'est pas l'IA. C'est l'absence de supervision.
1.Introduction
Il y a quelques mois, j'ai récupéré trois projets clients. Trois applications web "terminées". Trois MVPs développés en un temps record grâce au vibe coding.
Sur le papier, tout fonctionnait. Les interfaces étaient propres. Les démos impressionnantes. Les clients étaient satisfaits.
Puis j'ai ouvert le code.
Variables d'environnement exposées côté client. Données utilisateurs accessibles sans authentification. Mots de passe stockés en clair. Validation inexistante côté serveur.
Ce n'est pas une critique du vibe coding. C'est un constat de terrain. Et c'est exactement la raison pour laquelle j'écris cet article : montrer pourquoi cet outil extraordinaire nécessite une supervision experte pour passer du prototype à la production.
2.Qu'est-ce que le vibe coding ?
Le terme "vibe coding" a été popularisé par Andrej Karpathy, ancien directeur de l'IA chez Tesla, en février 2025. L'idée est simple : vous décrivez ce que vous voulez en langage naturel, et l'IA génère le code correspondant.
Plus besoin de taper chaque ligne. Plus besoin de chercher la syntaxe exacte. Vous "vibrez" avec l'IA, vous itérez par la conversation, et le code apparaît.
2.1.Le vibe coding en chiffres
Les outils sont nombreux : Cursor, GitHub Copilot, Claude Code, v0.dev, Bolt, Lovable... Chacun avec ses forces, mais tous partageant le même paradigme : la conversation remplace (partiellement) le code manuel.
Selon les études disponibles :
- 72% des développeurs utilisent désormais des assistants IA dans leur workflow quotidien
- 40% de gain de productivité moyen sur les tâches de prototypage
- 3x plus rapide pour créer un MVP fonctionnel selon les early adopters
Et ça fonctionne. Remarquablement bien. Pour le prototypage.
3.Pourquoi le vibe coding excelle pour le MVP
Je vais être clair : j'utilise l'IA dans mon workflow quotidien. Chez eDeveloppe, nous avons intégré ces outils depuis leurs premières versions. Et les bénéfices sont réels.
3.1.Validation d'idée accélérée
Avant, valider une idée produit nécessitait des semaines de développement. Aujourd'hui, un prototype fonctionnel peut être debout en quelques heures.
Pour un client qui hésite entre deux concepts, pouvoir montrer les deux en conditions réelles change tout. On ne discute plus d'abstractions. On teste.
3.2.Exploration technique facilitée
Vous hésitez entre deux approches architecturales ? L'IA peut générer les deux versions en parallèle. Vous visualisez concrètement les implications de chaque choix.
C'est particulièrement précieux pour les technologies qu'on maîtrise moins. L'IA devient un compagnon d'exploration, pas un remplaçant.
3.3.Réduction du code boilerplate
Le code répétitif, les structures CRUD basiques, les composants UI standards... Tout ça peut être délégué à l'IA. Le développeur se concentre sur la logique métier, la vraie valeur ajoutée.
Le vibe coding n'est pas là pour remplacer les développeurs. Il est là pour leur permettre de se concentrer sur ce qui compte vraiment : la conception, l'architecture et la résolution de problèmes complexes.
4.Le moment où tout bascule : du MVP à la production
Voici où les choses se compliquent.
Un MVP a un objectif précis : valider une hypothèse business avec un investissement minimal. La dette technique est acceptable. Les raccourcis sont tolérés. La perfection n'est pas l'objectif.
La production, c'est autre chose. Des vrais utilisateurs. Des vraies données. De vraies responsabilités légales (RGPD, sécurité). Une vraie maintenance sur le long terme.
Le problème n'est pas le vibe coding. Le problème est l'absence de transition entre ces deux phases.
5.Analyse des 3 projets récupérés : les failles systémiques
Je ne vais pas nommer les projets ni leurs contextes exacts. Ce qui compte, c'est la nature des problèmes rencontrés. Et malheureusement, ils sont systémiques.
5.1.Faille #1 : Variables d'environnement exposées côté client
Faille de sécurité critique : Dans deux des trois projets, les clés API et secrets étaient accessibles directement dans le navigateur via les DevTools.
Le code problématique
Le code ressemblait à ceci :
12345678910// Fichier: src/services/api.jsconst API_KEY = process.env.NEXT_PUBLIC_API_KEY;const DATABASE_URL = process.env.NEXT_PUBLIC_DATABASE_URL;const STRIPE_SECRET = process.env.NEXT_PUBLIC_STRIPE_SECRET;
export const fetchData = async () => { return fetch(DATABASE_URL, { headers: { 'Authorization': API_KEY } });};Pourquoi c'est critique
Toute variable préfixée NEXT_PUBLIC_ est incluse dans le bundle JavaScript envoyé au navigateur. N'importe qui peut ouvrir les DevTools et voir ces valeurs.
- Une clé Stripe secrète exposée ? Quelqu'un peut effectuer des transactions sur votre compte
- Une URL de base de données avec credentials ? Accès direct à toutes vos données
- Une clé API tierce ? Utilisation frauduleuse à vos frais
L'IA a généré ce code parce qu'on lui a demandé "de faire fonctionner l'appel API côté client". Elle a résolu le problème immédiat sans comprendre les implications de sécurité.
La solution correcte
123456789101112131415// Fichier: src/app/api/data/route.ts (API Route côté serveur)const API_KEY = process.env.API_KEY; // Jamais exposé au client
export async function GET() { const data = await fetch(EXTERNAL_API, { headers: { 'Authorization': API_KEY } }); return Response.json(await data.json());}
// Fichier: src/services/api.js (côté client)export const fetchData = async () => { // Appel à NOTRE API, pas directement au service externe return fetch('/api/data');};5.2.Faille #2 : Tous les champs de la base de données retournés
Dans les trois projets, les endpoints API retournaient l'intégralité des objets utilisateurs.
Le code problématique
1234567891011// GET /api/users/123 retourne :{ "id": 123, "email": "user@example.com", "password": "$2b$10$hashedpassword...", "resetToken": "abc123...", "stripeCustomerId": "cus_xxx", "internalNotes": "Client difficile", "role": "admin", "createdAt": "2024-01-15"}Pourquoi c'est dangereux
- Le hash du mot de passe : même hashé, il peut être attaqué par force brute ou rainbow tables
- Le token de reset : permet de réinitialiser le mot de passe de n'importe qui
- Les IDs internes : facilitent d'autres attaques (IDOR, énumération)
- Les notes internes : violation de confidentialité, risque légal RGPD
L'IA a fait ce qu'on lui a demandé : "retourner l'utilisateur". Elle n'a pas anticipé qu'il fallait filtrer les champs sensibles.
La solution correcte : Data Transfer Objects (DTO)
123456789101112131415161718192021222324// Définition d'un DTO (Data Transfer Object)interface PublicUserDTO { id: number; email: string; displayName: string; createdAt: string;}
// Fonction de transformationfunction toPublicUser(user: DatabaseUser): PublicUserDTO { return { id: user.id, email: user.email, displayName: user.displayName, createdAt: user.createdAt }; // Tous les autres champs sont explicitement exclus}
// Utilisation dans l'APIexport async function GET(req: Request, { params }) { const user = await db.users.findUnique({ where: { id: params.id } }); return Response.json(toPublicUser(user));}5.3.Faille #3 : Absence totale de validation serveur
Le code généré validait les données... côté client uniquement.
123456789101112const handleSubmit = (data) => { if (!data.email.includes('@')) { setError('Email invalide'); return; } if (data.amount < 0) { setError('Montant invalide'); return; } // Envoi direct à l'API sans validation serveur fetch('/api/transaction', { body: JSON.stringify(data) });};N'importe qui peut bypasser le frontend et envoyer des requêtes directement à l'API avec des données arbitraires. La validation client est une commodité UX, jamais une sécurité.
Dans un des projets, j'ai pu créer des transactions avec des montants négatifs (remboursements frauduleux) simplement en envoyant une requête cURL.
La validation côté client est une commodité pour l'utilisateur. La validation côté serveur est une obligation pour la sécurité. L'une ne remplace jamais l'autre.
5.4.Faille #4 : Architecture inexistante
C'est peut-être le problème le plus profond. Le code fonctionnait, mais il n'y avait aucune architecture.
Symptômes observés
- Logique métier mélangée aux composants UI
- Appels base de données directement dans les pages
- Aucune séparation des responsabilités
- État global dispersé partout
- Duplication massive de code
Conséquences pratiques
- Modifier une fonctionnalité nécessitait de toucher à 15 fichiers
- Ajouter une feature simple prenait des jours
- Les bugs réapparaissaient après chaque correction
- Impossible d'écrire des tests unitaires
Produire du code n'est pas concevoir un système.
L'IA génère du code qui fonctionne pour le cas demandé. Elle ne pense pas à la maintenabilité. Elle ne pense pas à l'évolution. Elle ne pense pas aux cas limites que vous n'avez pas mentionnés.
6.La différence fondamentale : vitesse vs robustesse
6.1.Les deux temporalités du développement
| Critère | Court terme (MVP) | Long terme (Production) | |---------|------------------|------------------------| | Question | "Est-ce que ça fonctionne maintenant ?" | "Est-ce que ça fonctionnera dans 6 mois ?" | | Priorité | Vitesse de livraison | Robustesse et maintenabilité | | Dette technique | Acceptable | Doit être remboursée | | Tests | Optionnels | Obligatoires | | Documentation | Minimale | Complète |
Le vibe coding excelle sur le court terme. C'est son super-pouvoir. Mais le long terme nécessite autre chose :
- Une architecture pensée pour absorber le changement
- Des patterns établis pour que le code reste cohérent
- Une documentation pour que d'autres puissent reprendre
- Des tests pour que les modifications ne cassent rien
- Une sécurité by design, pas ajoutée après coup
Ces éléments ne s'improvisent pas. Ils se conçoivent. Et cette conception reste, pour l'instant, une compétence humaine.
Un projet vibe codé à auditer ?
Nous analysons et restructurons les projets IA pour les rendre production-ready. Sécurité, architecture, performance — nous transformons votre MVP en produit solide.
Demander un audit7.L'IA comme multiplicateur de compétence
Voici ma thèse centrale : l'IA est un multiplicateur, pas un remplaçant.
7.1.Pour un développeur expérimenté
Un développeur expérimenté avec l'IA devient plus rapide, plus efficace, capable d'explorer plus de solutions. Il utilise l'IA comme un outil, pas comme un oracle. Il sait :
- Quand le code généré est correct
- Quand il faut le restructurer
- Quels patterns de sécurité appliquer
- Comment architecturer pour l'évolution
7.2.Pour un non-développeur
Un non-développeur avec l'IA peut créer des prototypes impressionnants, mais il ne voit pas ce qu'il ne sait pas. Il ne détecte pas les failles de sécurité. Il ne comprend pas pourquoi "ça marche" aujourd'hui mais pas demain.
L'IA multiplie ce que vous êtes déjà. Si vous êtes un architecte logiciel, elle vous rend plus productif. Si vous n'êtes pas développeur, elle vous donne l'illusion de l'être — jusqu'à la mise en production.
Ce n'est pas un jugement. C'est une observation de terrain. Les trois projets que j'ai récupérés avaient été créés par des personnes intelligentes, motivées, avec de vraies bonnes idées business. Mais sans background technique pour superviser ce que l'IA produisait.
8.Ne pas utiliser l'IA est une erreur stratégique
Je veux être parfaitement clair sur ce point : refuser d'intégrer l'IA dans son workflow en 2026 est une erreur.
Les gains de productivité sont réels. L'exploration technique est accélérée. La barrière à l'entrée pour tester des idées est plus basse que jamais.
8.1.Notre utilisation quotidienne chez eDeveloppe
Nous utilisons l'IA quotidiennement :
- Pour le prototypage rapide de nouvelles features
- Pour explorer des approches techniques alternatives
- Pour générer du code boilerplate et des structures répétitives
- Pour la documentation et les commentaires de code
- Pour les revues de code et la détection de patterns problématiques
Mais chaque ligne générée est supervisée, auditée et restructurée avant de partir en production.
C'est là que se fait la différence. Pas dans l'outil. Dans la maîtrise de l'outil.
9.Comment utiliser le vibe coding intelligemment
9.1.Pour le prototypage et MVP
Le vibe coding brille ici. Utilisez-le sans retenue pour :
- Valider des concepts rapidement
- Créer des démos fonctionnelles
- Explorer des technologies
- Tester des interfaces utilisateur
Acceptez la dette technique. C'est le deal du MVP.
9.2.Pour la production
La transition MVP → Production nécessite une phase de refactoring architectural. Pas optionnelle. Obligatoire.
Cette phase inclut :
- Audit de sécurité : variables d'environnement, données exposées, validation
- Restructuration architecturale : séparation des responsabilités, patterns clairs
- Ajout des tests : unitaires, intégration, end-to-end
- Documentation technique : pour la maintenance future
- Optimisation performance : ce qui était acceptable en MVP ne l'est plus
Notre approche chez eDeveloppe : Quand un client arrive avec un projet vibe codé, nous commençons systématiquement par un audit technique complet avant toute mise en production. Ce n'est pas une option — c'est une condition de collaboration.
10.Ce que nous avons fait sur les 3 projets récupérés
Pour chacun des trois projets :
- Audit de sécurité complet : identification de toutes les failles
- Migration des secrets : suppression de toutes les variables publiques sensibles
- Création d'une couche API : proxy sécurisé pour tous les appels externes
- Implémentation de DTOs : filtrage strict des données retournées
- Validation serveur : schémas de validation avec Zod côté backend
- Restructuration progressive : séparation logique métier / présentation
- Tests critiques : couverture des flux de sécurité et business
Le résultat : des applications enfin prêtes pour la production. Scalables. Maintenables. Sécurisées.
Le vibe coding crée le squelette. L'expertise technique ajoute les muscles, les organes et le système immunitaire. Les deux sont nécessaires.
11.Conclusion
Le vibe coding n'est ni bon ni mauvais. C'est un outil. Comme tout outil, son impact dépend de qui l'utilise et comment.
Un marteau peut construire une maison ou détruire une fenêtre. L'IA peut accélérer un projet solide ou amplifier une architecture bancale.
La vraie question n'est pas "faut-il utiliser l'IA ?" — c'est "comment l'utiliser intelligemment ?"
11.1.Notre position chez eDeveloppe
- Oui à l'IA pour accélérer le prototypage
- Oui à l'IA pour explorer des solutions techniques
- Oui à l'IA pour réduire le code répétitif
- Mais jamais sans supervision architecturale
- Mais jamais sans audit de sécurité
- Mais jamais sans restructuration avant production
Le code généré n'est qu'un point de départ. La valeur est dans ce qu'on en fait ensuite.
Ne pas utiliser l'IA est une erreur. L'utiliser sans la maîtriser en est une autre. La vraie compétence est dans l'équilibre — et c'est exactement ce qui différencie un prototype d'un produit.

