Introduction

Jusqu'ici, nous avons appris à modifier l'existant et à réparer ce qui était cassé. Mais la véritable magie de Codex réside dans sa capacité de création. Vous avez une idée de génie sous la douche ? Codex peut l'écrire.

Cependant, générer une fonctionnalité "à partir de rien" nécessite une vraie discipline. L'erreur principale des débutants est de demander une application gigantesque en une seule phrase, ce qui aboutit toujours à un échec.

Les développeurs professionnels, eux, savent qu'une application n'est qu'un empilement de dizaines de petites fonctionnalités simples. Ce chapitre vous apprendra à penser comme eux : découper, analyser, puis construire.

Qu'est-ce qu'une fonctionnalité (Feature) ?

Une fonctionnalité est un élément autonome de votre projet qui rend un service précis à l'utilisateur final. Elle peut être purement visuelle, ou impliquer une logique très complexe.

FonctionnalitéÀ quoi sert-elle ?Complexité estimée
Bouton "Retour en haut"Remonte la page au clic.Très faible (HTML/JS basique)
Accordéon / FAQPlie ou déplie du texte.Faible (HTML natif ou JS simple)
Formulaire de contactEnvoie un email à l'admin.Moyenne (Besoin d'un backend)
Recherche avec autocomplétionSuggère des résultats en direct.Moyenne (Filtrage JS)
AuthentificationPermet de se connecter/déconnecter.Élevée (Base de données, Sécurité)
Espace membre / DashboardAffichage de données privées.Très élevée (Multi-fichiers)

Réfléchir avant de demander

Ne vous jetez pas sur le clavier. Prenez toujours 2 minutes pour appliquer la méthode "OQAF" (Objectif, Qui, Action, Fichiers).

  • Objectif : Quel est le but précis de cette fonctionnalité ?
  • Qui (L'utilisateur) : Est-ce destiné à tout le monde, ou seulement à un administrateur connecté ?
  • Action : Que doit faire l'utilisateur ? (Cliquer, scroller, remplir un champ...)
  • Fichiers : Où cela va-t-il s'afficher ? (Sur l'accueil, sur une nouvelle page, partout...)
graph TD;
    A[L'Idée Brute] --> B[Clarification OQAF];
    B --> C[Découpage en Petites Tâches];
    C --> D[Génération du HTML/Structure];
    D --> E[Génération du CSS/Design];
    E --> F[Génération du JS/Logique];

Construire une fonctionnalité étape par étape

Comparons deux manières de demander une fonctionnalité majeure.

Erreurs fréquentes

L'approche destructrice (Le pire prompt possible) :
"Crée un espace membre complet avec login, mot de passe oublié, profil utilisateur et upload d'avatar."
Codex va générer 500 lignes de code indigestes, modifier 10 fichiers d'un coup, mélanger le frontend et le backend, et le projet finira par planter lamentablement.

Bonnes pratiques

L'approche professionnelle (L'entonnoir) :
1. "Analyse le projet. Je veux créer un système de login."
2. "Crée uniquement la table de base de données pour les utilisateurs."
3. "Parfait. Maintenant, crée le formulaire visuel de connexion (HTML/CSS)."
4. "Super. Relions maintenant le formulaire à la base de données (JS/Backend)."
5. "Terminé. Passons maintenant à la fonctionnalité de mot de passe oublié."

Exemples de fonctionnalités simples

Commençons par créer des éléments isolés, ne nécessitant pas de base de données.

Exemple 1 : Le bouton "Retour en haut"

Contexte : Une longue page d'article de blog.

Prompt : "Ajoute un bouton circulaire 'Flèche vers le haut' en bas à droite de l'écran. Il doit n'apparaître que lorsque l'utilisateur a scrollé de 300px. Au clic, la page remonte doucement."

Pourquoi ça marche : Tout est défini : la forme (circulaire), la position (bas droite), la condition (scroll > 300px) et l'animation (doucement).

Exemple 2 : Une foire aux questions (FAQ)

Contexte : Une page de présentation de produit.

Prompt : "Crée une section FAQ sous la présentation. Utilise la balise native HTML `<details>` pour éviter le JS. Les questions doivent avoir un fond gris clair, et s'ouvrir au clic."

Pourquoi ça marche : La contrainte technique majeure est précisée (utiliser le HTML natif et éviter le JavaScript inutile).

Exemples de fonctionnalités avancées

Passons aux fonctionnalités nécessitant une logique métier poussée.

Exemple 1 : La Barre de Recherche Dynamique

Objectif : Chercher un produit en temps réel sans recharger la page.

Découpage recommandé :

  • Prompt 1 : "Génère un faux tableau JSON de 10 produits pour nous servir de test."
  • Prompt 2 : "Crée une barre de recherche en haut de page. Elle doit écouter ce qu'on tape lettre par lettre."
  • Prompt 3 : "Connecte la barre au tableau JSON : affiche uniquement les produits dont le nom correspond."

Exemple 2 : La Pagination de Blog

Objectif : N'afficher que 5 articles par page au lieu de 50.

Découpage recommandé :

  • Prompt 1 : "Analyse mon fichier d'articles. Explique comment tu comptes découper la liste."
  • Prompt 2 : "Modifie l'affichage pour limiter à 5 articles. Ajoute des boutons 1, 2, 3 en bas."
  • Prompt 3 : "Gère la logique : quand on clique sur '2', cache les articles 1 à 5, et montre les 6 à 10."

Ajouter une fonctionnalité sans casser l'existant

C'est la terreur absolue. Vous demandez un beau formulaire de contact, et Codex écrase la couleur globale de tout votre site.

Pour protéger votre projet, encadrez vos prompts avec des directives de sécurité très strictes :

  • "Ne modifie pas les classes globales. Utilise le fichier `contact.css`."
  • "Réutilise le composant `<Button />` déjà existant au lieu d'en réinventer un nouveau."
  • "Assure-toi que cette nouvelle section n'ajoute pas de barre de défilement horizontale."

Faire évoluer une fonctionnalité par itération

Rien n'est définitif en développement. Vous pouvez créer un "vieux vélo" fonctionnel, puis l'améliorer en "moto de course".

La conversation typique pour faire évoluer un élément :

V1 (Basique) : "Crée une galerie affichant les images du dossier `/assets/`."

V2 (Design) : "Passe cette galerie en CSS Grid, avec 3 colonnes espacées de 20px."

V3 (Logique) : "Quand on clique sur une image, elle doit s'afficher en grand au milieu de l'écran (Modal)."

V4 (Polissage) : "Ajoute une croix en haut à droite de la modal pour la fermer, et un fond noir semi-transparent."

Demander plusieurs propositions architecturales

Vous ne savez pas quelle est la meilleure manière de créer une fonctionnalité ? Demandez à l'IA de faire le travail de réflexion pour vous.

Je veux créer un système pour passer le site en Mode Sombre. Propose-moi 3 méthodes techniques différentes pour le faire. Compare leurs avantages et leurs inconvénients (facilité d'implémentation vs performance). Dis-moi laquelle est la plus adaptée pour un débutant.

Codex vous répondra : "Méthode 1 : Variables CSS (Recommandé). Méthode 2 : Deux fichiers CSS séparés. Méthode 3 : React Context." Vous choisirez ensuite la méthode 1, en toute connaissance de cause.

Vérifier la fonctionnalité (Checklist de validation)

Avant de crier victoire et de fermer Codex, effectuez ces tests essentiels :

  • [ ] Le test critique : La fonctionnalité marche-t-elle exactement comme demandé ?
  • [ ] Le test mobile : Redimensionnez votre fenêtre. C'est toujours beau ou le texte déborde-t-il ?
  • [ ] Le test du silence : Ouvrez la console F12. Est-elle vierge de toute erreur rouge ?
  • [ ] Le test de régression : L'ajout de ce code a-t-il cassé autre chose ailleurs (ex: le menu principal) ?

Les erreurs les plus fréquentes

  • Symptôme : Un code d'une complexité délirante pour un problème simple.
    Cause : Vous n'avez pas cadré la demande. Pour faire une modale, Codex a installé Redux et 3 bibliothèques externes.
    Bonne pratique : Exigez la simplicité : "Crée cette fenêtre modale en utilisant uniquement du JavaScript Vanilla."
  • Symptôme : Le code est parfait, mais le design jure avec le reste du site.
    Cause : Codex a inventé ses propres couleurs (ex: un bouton bleu vif alors que votre site est vert et noir).
    Bonne pratique : "Réutilise exactement les codes hexadécimaux et la typographie définis dans `global.css`."
  • Symptôme : Vous avez demandé 4 fonctionnalités, il n'en a fait que 2.
    Cause : Limite de tokens (mémoire à court terme). Codex a "oublié" la fin de la phrase.
    Bonne pratique : Une. Seule. Fonctionnalité. Par. Prompt.
  • Symptôme : La fonctionnalité marche sur votre machine, mais pas pour de vrai.
    Cause : Vous avez créé un formulaire d'envoi d'email, mais vous n'avez pas de backend serveur pour l'envoyer.
    Bonne pratique : Demandez à Codex ce qu'il vous manque : "De quoi ai-je besoin côté serveur pour que cet email parte réellement ?"
  • Symptôme : Codex tourne en boucle sur la même erreur.
    Cause : La conception de base de la fonctionnalité était mauvaise.
    Bonne pratique : "Stop. Cette approche ne marche pas. Effaçons ce qu'on vient de faire et trouvons une architecture différente."

Atelier pratique

Exercice 1 : Le "Sticky Header"
Contexte : Le menu disparaît quand on scrolle.
Prompt : "Modifie le CSS pour que le `#header` reste toujours collé en haut de l'écran lors du défilement, avec une légère ombre portée (box-shadow) en dessous."

Exercice 2 : La notification éphémère (Toast)
Contexte : Après un clic réussi, aucune confirmation visuelle n'apparaît.
Prompt : "Crée une petite bulle verte 'Opération réussie' qui apparaît en bas à droite au clic du bouton, et qui disparaît toute seule au bout de 3 secondes."

Exercice 3 : L'indicateur de lecture
Contexte : Un très long article de blog.
Prompt : "Ajoute une très fine barre de progression rouge tout en haut de l'écran. Elle doit se remplir de 0 à 100% au fur et à mesure que l'utilisateur scrolle vers le bas de l'article."

Exercice 4 : Le filtre simple
Contexte : Une liste de 5 articles et 3 boutons (Tous, Tech, Lifestyle).
Prompt : "Au clic sur les boutons de catégories, masque en CSS les articles qui ne correspondent pas à la catégorie choisie."

Exercice 5 : La Skeleton de chargement
Contexte : Une requête API lente qui affiche une page blanche pendant 2 secondes.
Prompt : "En attendant que les vraies données arrivent, affiche 3 fausses 'cartes' grises avec une animation de balayage brillant (skeleton loading) pour faire patienter l'utilisateur."

Conseils vitaux

Bonnes pratiques

Les fausses données (Le Mocking)
Avant de créer une base de données complexe ou de brancher une vraie API, demandez toujours à Codex de générer des "données en dur" (hardcoded) pour construire l'interface. Exemple : "Crée le tableau de bord avec ces 3 fausses transactions". Une fois que c'est beau, vous passerez aux vraies données.

Astuce

Demandez un plan de match
Pour toute fonctionnalité qui dépasse 1 fichier (ex: Recherche, Panier, Authentification), le premier prompt doit toujours être : "Faisons cela. Écris-moi la liste des 5 étapes que nous allons suivre ensemble". Cela cadre l'IA et vous donne une feuille de route.

Tableau récapitulatif : Le Découpage

FonctionnalitéDifficultéBonne méthode (Découpage)
Bouton "Retour en haut"FacileHTML -> CSS -> Script au scroll
Mode SombreFacileVariables CSS -> Bouton -> Sauvegarde LocalStorage
Bannière d'annonceFacileHTML en haut de page -> CSS -> Bouton fermer
FAQ AccordéonFacileBalises <details> natives -> Stylisation CSS
Carrousel d'imagesMoyenStructure liste -> Boutons Suivant/Précédent -> Animations
Barre de rechercheMoyenInput HTML -> Logique JS de filtre -> Affichage résultats
Formulaire avec validationMoyenChamps HTML -> Règles JS (email valide) -> Envoi
PaginationMoyenDécoupage des données (chunk) -> Boutons de pages
Panier flottantMoyenÉtat global (State) -> UI du panier -> Logique Ajout/Suppression
Carte Interactive (Map)MoyenDiv conteneur -> Import script externe -> Ajout des marqueurs
Authentification (Login)DifficileTable BDD -> API Login -> Formulaire Front -> Session
Dashboard AdminDifficileSécurisation URL -> Maquette globale -> Graphiques
Paiement (Stripe)DifficileClés API -> Formulaire CB -> Webhook serveur
Chat en temps réelDifficileWebSockets -> Interface messagerie -> Historique
Générateur PDFDifficileTemplate HTML invisible -> Conversion backend -> Téléchargement

Foire aux questions

Oui, mais pas en un seul clic. Vous devrez le guider brique par brique. Construire le header, puis l'accueil, puis la base de données, etc.
En la décomposant. Si vous voulez un espace membre, demandez d'abord la création de la table Utilisateur, puis le formulaire de connexion, puis la page profil.
Absolument, c'est sa spécialité. Il analysera votre architecture actuelle pour y brancher le nouveau code sans rien casser.
Non. Si vous lui en donnez l'autorisation, Codex peut créer de nouveaux fichiers (ex: `Contact.js` ou `style.css`) et les relier au projet.
Demandez-lui toujours de réutiliser les classes CSS et les composants existants. 'Crée un bouton qui utilise les mêmes classes que le bouton Connexion'.
C'est la pire chose à faire. Demandez toujours une seule fonctionnalité par prompt pour garder le contrôle du code généré.
Par itération. Commencez par une version basique (v1). Une fois validée, demandez la v2 (avec animations), puis la v3 (avec connexion base de données).
Une fois la fonctionnalité terminée, dites : 'Ce code fonctionne. Peux-tu l'optimiser pour qu'il soit plus rapide et plus court, sans changer le résultat ?'
Il suffit de le préciser dès le départ : 'Cette galerie doit s'afficher en 3 colonnes sur PC, et en 1 seule colonne sur mobile'.
Précisez vos contraintes : 'N'ajoute pas de nouveau CSS global. Utilise uniquement les couleurs et les marges déjà définies dans le projet'.
Dites-lui : 'Je ne connais pas Redis. Peux-tu utiliser quelque chose de plus simple comme le LocalStorage ?'
Oui, il connaît très bien les documentations des grandes API. Demandez-lui : 'Génère le code d'intégration basique de Google Maps'.
Oui, mais il faut parfois lui rappeler. Exigez toujours : 'Assure-toi que ce formulaire soit protégé contre les injections SQL'.
C'est l'un de ses meilleurs atouts. 'Génère un fichier JSON avec 10 faux utilisateurs réalistes pour tester mon tableau'.
Soyez honnête : 'Je n'aime pas cette approche. Peux-tu me proposer une autre méthode complètement différente ?'

À retenir

À retenir

Créer n'a jamais été aussi rapide, à condition de savoir freiner l'IA.

  • Codex est capable de créer n'importe quelle fonctionnalité, du simple bouton à l'espace e-commerce complexe.
  • Le secret des pros est le découpage : on crée la base, puis l'interface, puis la logique, puis le polissage.
  • Encadrez toujours Codex avec le contexte existant : imposez-lui d'utiliser VOS couleurs et VOS composants.
  • Si une fonctionnalité majeure vous semble trop lourde à gérer, demandez à l'IA de proposer plusieurs architectures différentes et de les comparer avant d'écrire la moindre ligne.

Transition vers le chapitre suivant

Vous savez désormais modifier, réparer, et créer de nouvelles choses avec Codex. Mais que faire si vous vous trompez lourdement et que vous avez besoin de tout annuler ?

Dans le prochain chapitre, nous allons découvrir le duo ultime du développement moderne : Codex et Git. Vous allez apprendre comment créer des "points de sauvegarde" temporels pour expérimenter n'importe quelle fonctionnalité sans jamais avoir peur de détruire votre projet.