Skip to content

Phase 5 : Code - Génération de Code Exécutable ​

Ce Que Vous Pourrez Faire ​

  • Génération full-stack en un clic : Générer automatiquement des applications frontend et backend exécutables à partir du UI Schema et de la conception Tech
  • Comprendre le flux de génération de code : Maîtriser comment Code Agent transforme les documents de conception en code de production
  • Valider la qualité du code : Apprendre à vérifier l'intégrité du code généré, la couverture de test et les standards de sécurité
  • Déboguer les problèmes courants : Résoudre les problèmes d'installation de dépendances, de vérification de types et de connexion API

Votre Situation Actuelle ​

Vous avez terminé la structuration de l'idée produit, la génération du PRD, la conception UI et l'architecture technique. Le plus difficile maintenant est :

  • Comment transformer la conception en code : Le UI Schema et la conception Tech sont dans des documents, mais comment les implémenter ?
  • Le développement full-stack est trop complexe : Le backend nécessite Express + Prisma, le frontend nécessite React Native, par où commencer ?
  • La qualité du code est difficile à garantir : Comment s'assurer que le code généré a des tests, de la documentation et respecte les normes de sécurité ?
  • Pas assez de temps : Écrire un MVP prend plusieurs jours, y a-t-il une méthode plus rapide ?

La phase Code est conçue pour résoudre ces problèmes — elle génère automatiquement du code full-stack de production basé sur les conceptions des phases précédentes.

Quand Utiliser Cette Méthode ​

Lorsque vous avez besoin de :

  • Valider rapidement une idée : Valider la faisabilité d'une idée produit avec du code, plutôt que d'investir directement dans le développement
  • Créer une structure d'application : Fournir une base exécutable pour le développement ultérieur, plutôt que de partir de zéro
  • Unifier la stack technique : S'assurer que le code frontend et backend suit une architecture et des normes unifiées
  • Économiser du temps de développement : De la conception au code, compléter le framework MVP en quelques minutes

Idée Principale ​

Code Agent est un ingénieur full-stack. Sa mission est de transformer les documents de conception des phases précédentes en code exécutable. Ses caractéristiques principales :

Entrées et Sorties ​

TypeContenu
EntréeUI Schema (structure d'interface), Conception Tech (solution technique), Prisma Schema (modèle de données)
Sortieartifacts/backend/ (code backend), artifacts/client/ (code frontend)

Stack Technique ​

PartieStack Technique
BackendExpress + Prisma + TypeScript
FrontendReact Native Web + Expo + TypeScript
Base de donnéesSQLite (développement) / PostgreSQL (production)

Contraintes d'Exécution ​

Portée Stricte

Code Agent implémente uniquement les fonctionnalités confirmées dans le PRD et le UI Schema, n'ajoute pas :

  • Systèmes d'authentification et d'autorisation
  • Gestion d'état complexe (comme Redux)
  • Fonctionnalités non essentielles

Suivez-Moi ​

Étape 1 : Entrer dans la Phase Code ​

Supposons que vous avez terminé la phase Tech et que vous souhaitez maintenant générer le code.

bash
# Si dans le pipeline, passer directement à la phase suivante
factory run code

# Ou redémarrer depuis une phase spécifique
factory run code

Vous devriez voir : La CLI affiche les informations de la phase Code, y compris les fichiers d'entrée et les sorties attendues.

Étape 2 : L'Assistant AI Exécute Code Agent ​

L'assistant AI charge agents/code.agent.md et skills/code/skill.md, puis commence l'exécution.

Flux d'exécution de Code Agent :

mermaid
graph TD
    A[Lire les fichiers d'entrée] --> B[Lire les fichiers de template]
    B --> C[Générer le code backend]
    C --> D[Générer le code frontend]
    D --> E[Vérifier la checklist]
    E --> F[Produire les livrables]

Ce Que Fera l'Assistant AI :

  1. Lire les fichiers de template (skills/code/references/backend-template.md et frontend-template.md)

    • Comprendre la structure du projet et l'organisation du code
    • Apprendre comment organiser les répertoires et les fichiers de configuration
  2. Analyser les fichiers d'entrée

    • Comprendre la structure des pages et les composants depuis ui.schema.yaml
    • Comprendre l'architecture technique et la conception API depuis tech.md
    • Comprendre le modèle de données depuis schema.prisma
  3. Générer le code backend

    • Créer la structure de projet Express + Prisma
    • Générer les routes API et les contrôleurs
    • Implémenter la validation des données et la gestion des erreurs
    • Ajouter les tests et la documentation
  4. Générer le code frontend

    • Créer la structure de projet React Native + Expo
    • Générer les composants de page et les composants UI
    • Implémenter la gestion d'état des données et les appels API
    • Ajouter les tests et la configuration de navigation
  5. Vérifier la checklist

    • Vérifier contre la checklist dans Code Skill
    • S'assurer que tous les éléments obligatoires sont terminés
  6. Produire les livrables

    • Générer les répertoires artifacts/backend/ et artifacts/client/

Étape 3 : Valider le Code Généré ​

Une fois Code Agent terminé, une structure de répertoire de code complète sera générée.

Structure du Répertoire Backend :

backend/
├── package.json          # Dépendances et scripts
├── tsconfig.json         # Configuration TypeScript
├── .env.example          # Template de variables d'environnement
├── .gitignore            # Fichiers ignorés par Git
├── README.md             # Description du projet
├── GETTING_STARTED.md    # Guide de démarrage rapide
├── prisma/
│   ├── schema.prisma     # Modèle de données (copié depuis la phase Tech)
│   └── seed.ts           # Données de seed
└── src/
    ├── index.ts          # Point d'entrée de l'application
    ├── app.ts            # Configuration Express
    ├── config/           # Configuration des variables d'environnement
    ├── lib/              # Client Prisma
    ├── middleware/       # Gestion des erreurs, logs
    ├── routes/           # Routes API
    ├── controllers/      # Contrôleurs
    ├── services/         # Logique métier
    ├── validators/       # Validation des entrées (Zod)
    └── __tests__/        # Fichiers de test

Structure du Répertoire Frontend :

client/
├── package.json          # Dépendances et scripts
├── tsconfig.json         # Configuration TypeScript
├── app.json              # Configuration Expo
├── babel.config.js       # Configuration Babel
├── .env.example          # Template de variables d'environnement
├── .gitignore            # Fichiers ignorés par Git
├── README.md             # Description du projet
├── GETTING_STARTED.md    # Guide de démarrage rapide
├── App.tsx               # Point d'entrée de l'application
└── src/
    ├── config/           # Configuration des variables d'environnement
    ├── api/              # Client API
    ├── components/       # Composants UI
    ├── hooks/            # Hooks personnalisés
    ├── navigation/       # Configuration de navigation
    ├── screens/          # Composants de page
    ├── styles/           # Thème et styles
    └── types/            # Définitions de types

Point de Contrôle ✅ : Confirmer que les fichiers suivants existent :

FichierBackendFrontend
package.json✅✅
tsconfig.json✅✅
.env.example✅✅
README.md✅✅
GETTING_STARTED.md✅✅
Fichiers de test✅✅
Prisma Schema✅-

Étape 4 : Démarrer le Service Backend ​

Suivez les instructions de backend/GETTING_STARTED.md pour démarrer le service.

bash
# Entrer dans le répertoire backend
cd artifacts/backend

# Installer les dépendances
npm install

# Configurer les variables d'environnement
cp .env.example .env

# Initialiser la base de données
npx prisma generate
npx prisma migrate dev
npm run db:seed

# Démarrer le serveur de développement
npm run dev

Vous devriez voir :

Server running on http://localhost:3000
Environment: development
Database connected

Point de Contrôle ✅ : Accéder au point de terminaison de vérification de santé pour confirmer que le service fonctionne normalement.

bash
curl http://localhost:3000/health

Devrait retourner :

json
{
  "status": "ok",
  "timestamp": "2024-01-29T12:00:00.000Z"
}

Étape 5 : Démarrer l'Application Frontend ​

Suivez les instructions de client/GETTING_STARTED.md pour démarrer l'application.

bash
# Ouvrir un nouveau terminal et entrer dans le répertoire frontend
cd artifacts/client

# Installer les dépendances
npm install

# Configurer les variables d'environnement
cp .env.example .env

# Démarrer le serveur de développement
npm start

Vous devriez voir : Metro Bundler démarre et affiche les options d'exécution.

› Metro waiting on exp://192.168.x.x:19000
› Scan the QR code above with Expo Go (Android) or the Camera app (iOS)
› Press a │ open Android
› Press i │ open iOS simulator
› Press w │ open web

Logs for your project will appear below.

Sélectionnez la plateforme d'exécution :

  • Appuyez sur w - Ouvrir dans le navigateur (le plus pratique pour les tests)

Point de Contrôle ✅ : L'application peut s'ouvrir dans le navigateur et afficher l'interface frontend.

Étape 6 : Tester l'Intégration Frontend-Backend ​

  1. Accéder à la documentation API : http://localhost:3000/api-docs

    • Consulter la documentation Swagger UI
    • Confirmer que tous les points de terminaison sont définis
  2. Tester les fonctionnalités frontend :

    • Créer de nouvelles données
    • Modifier des données
    • Supprimer des données
    • Rafraîchir la liste
  3. Vérifier les logs de la console :

    • Le frontend a-t-il des erreurs d'appel API ?
    • Le backend a-t-il des logs de requête ?
    • Y a-t-il des exceptions non gérées ?

Étape 7 : Confirmer les Points de Contrôle ​

Lorsque l'assistant AI confirme que la phase Code est terminée, vous verrez :

✅ Phase Code terminée

Fichiers générés :
- Backend : artifacts/backend/ (Express + Prisma + TypeScript)
- Frontend : artifacts/client/ (React Native + Expo + TypeScript)

Options de point de contrôle :
[1] Continuer - Passer à la phase Validation
[2] Réessayer - Régénérer le code
[3] Pause - Sauvegarder l'état actuel

Sélectionnez Continuer pour passer à la phase suivante.

Points de Contrôle ✅ ​

Après avoir terminé la phase Code, vous devriez :

  • [ ] Le code backend peut démarrer normalement (npm run dev)
  • [ ] L'application frontend peut s'ouvrir dans le navigateur
  • [ ] Le point de terminaison de vérification de santé retourne normalement
  • [ ] La documentation API est accessible (/api-docs)
  • [ ] Le frontend peut appeler l'API backend
  • [ ] Le frontend gère les états Loading et Error
  • [ ] Les fichiers de test existent et peuvent s'exécuter (npm test)

Pièges à Éviter ​

Problème 1 : Échec de l'Installation des Dépendances ​

Symptôme : npm install retourne une erreur

Solution :

bash
# Effacer le cache et réessayer
rm -rf node_modules package-lock.json
npm cache clean --force
npm install

Problème 2 : Échec de la Migration Prisma ​

Symptôme : npx prisma migrate dev retourne une erreur

Solution :

bash
# Réinitialiser la base de données
npx prisma migrate reset

# Ou supprimer manuellement le fichier de base de données
rm prisma/dev.db
npx prisma migrate dev

Problème 3 : Le Frontend Ne Peut Pas Se Connecter au Backend ​

Symptôme : Le frontend affiche une erreur Network Error ou ECONNREFUSED

Checklist :

  1. Confirmer que le backend est démarré : curl http://localhost:3000/health
  2. Vérifier la configuration .env du frontend : EXPO_PUBLIC_API_URL=http://localhost:3000/api
  3. Si vous testez sur un appareil réel, remplacez par l'IP du LAN (par exemple http://192.168.1.100:3000/api)

Problème 4 : Échec des Tests ​

Symptôme : npm test retourne une erreur

Solution :

  • Confirmer que les fichiers de test existent : src/__tests__/
  • Vérifier si les dépendances de test sont installées : npm install --save-dev vitest @testing-library/react-native
  • Consulter les messages d'erreur et corriger les problèmes dans le code

Exigences Spéciales de Code Agent ​

Code Agent a certaines contraintes et exigences spéciales qui nécessitent une attention particulière :

1. Doit Lire les Fichiers de Template ​

Avant de générer le code, Code Agent doit lire complètement :

  • skills/code/references/backend-template.md
  • skills/code/references/frontend-template.md

Ces deux fichiers de template montrent la structure de projet prête pour la production et le code d'exemple.

2. Interdiction d'Ajouter l'Authentification et l'Autorisation ​

Limitation de Portée

Code Agent est strictement interdit d'ajouter :

  • Fonctionnalités de connexion/enregistrement
  • Authentification par Token
  • Contrôle des permissions
  • Gestion d'état complexe (comme Redux)

Ces fonctionnalités seront ajoutées dans des itérations ultérieures, la phase MVP se concentre uniquement sur la logique métier principale.

3. Exigences de Qualité du Code ​

Le code généré doit satisfaire :

ExigenceDescription
TypeScriptMode strict, pas de type any
TestsVérification de santé, points de terminaison CRUD, tests de validation des entrées
Documentation APISpécification Swagger/OpenAPI (/api-docs)
Gestion des erreursMiddleware de gestion des erreurs unifié
LogsLogs structurés (winston/pino)
SécuritéValidation Zod, helmet, liste blanche CORS
DocumentationREADME et guide de démarrage rapide

Checklist de Génération de Code ​

Code Agent génère le code en vérifiant contre la checklist suivante.

Éléments Obligatoires Backend ​

  • [ ] Support des variables d'environnement (dotenv)
  • [ ] Verrouillage des versions de dépendances (Prisma 5.x)
  • [ ] Définitions de types (gestion des champs JSON)
  • [ ] Dépendances principales : Express + Prisma + Zod + Helmet
  • [ ] Points de terminaison API : vérification de santé + CRUD
  • [ ] Format de réponse unifié
  • [ ] Validation des entrées (Zod Schema)
  • [ ] Middleware de gestion des erreurs
  • [ ] Fichiers de test (vérification de santé + CRUD + validation)
  • [ ] Documentation API Swagger
  • [ ] Données de seed (prisma/seed.ts)

Éléments Obligatoires Frontend ​

  • [ ] Dépendances principales : React Native Web + Expo + React Navigation
  • [ ] Stockage persistant (AsyncStorage)
  • [ ] Configuration de navigation (React Navigation 6+)
  • [ ] Zone sécurisée (SafeAreaView)
  • [ ] Client API (Axios + intercepteurs)
  • [ ] Hooks personnalisés (gestion des données)
  • [ ] Composants UI de base (Button, Input, Card, Loading)
  • [ ] Composants de page (au moins page d'accueil et page de détail)
  • [ ] Gestion des états Loading et Error
  • [ ] Pull-to-refresh (RefreshControl)
  • [ ] Fichiers de test (rendu de page + composants + hooks)

Tests et Assurance Qualité ​

Même dans la phase MVP, Code Agent génère du code de test de base.

Exemple de Test Backend ​

typescript
// src/__tests__/items.test.ts
import { describe, it, expect } from 'vitest';
import request from 'supertest';
import app from '../app';

describe('Items API', () => {
  it('should return health check', async () => {
    const res = await request(app).get('/health');
    expect(res.status).toBe(200);
  });

  it('should create a new item', async () => {
    const res = await request(app)
      .post('/api/items')
      .send({ title: 'Test Item', amount: 100 });

    expect(res.status).toBe(201);
    expect(res.body.data).toHaveProperty('id');
  });

  it('should reject invalid item', async () => {
    const res = await request(app)
      .post('/api/items')
      .send({ title: '' }); // Champ obligatoire manquant

    expect(res.status).toBe(400);
  });
});

Exemple de Test Frontend ​

typescript
// src/screens/__tests__/HomeScreen.test.tsx
import React from 'react';
import { render, screen } from '@testing-library/react-native';
import HomeScreen from '../HomeScreen';

describe('HomeScreen', () => {
  it('should render without crashing', () => {
    render(<HomeScreen />);
    expect(screen.getByText(/home/i)).toBeTruthy();
  });

  it('should show loading state initially', () => {
    render(<HomeScreen />);
    expect(screen.getByTestId('loading-indicator')).toBeTruthy();
  });
});

Guide de Démarrage Rapide ​

Chaque projet généré inclut un GETTING_STARTED.md pour vous aider à exécuter le projet en 5 minutes.

Démarrage Rapide Backend ​

bash
# 1. Cloner le projet
cd artifacts/backend

# 2. Installer les dépendances
npm install

# 3. Configurer les variables d'environnement
cp .env.example .env

# 4. Initialiser la base de données
npx prisma generate
npx prisma migrate dev
npm run db:seed

# 5. Démarrer le service
npm run dev

Démarrage Rapide Frontend ​

bash
# 1. Cloner le projet
cd artifacts/client

# 2. Installer les dépendances
npm install

# 3. Configurer les variables d'environnement
cp .env.example .env

# 4. Démarrer l'application
npm start

Note : Assurez-vous que le backend est démarré, sinon le frontend ne pourra pas se connecter à l'API.

Résumé de la Leçon ​

La phase Code est l'un des maillons clés du pipeline, elle transforme les conceptions des phases précédentes en code exécutable.

Points Clés :

  1. Entrées et Sorties : Code Agent génère du code frontend et backend basé sur le UI Schema, la conception Tech et le Prisma Schema
  2. Stack Technique : Le backend utilise Express + Prisma, le frontend utilise React Native Web + Expo
  3. Contrôle de Portée : Implémenter uniquement les fonctionnalités du PRD et du UI Schema, ne pas ajouter d'authentification et d'autorisation
  4. Assurance Qualité : Générer des tests, de la documentation API et des guides de démarrage rapide
  5. Critères de Validation : Le backend peut démarrer, le frontend peut s'afficher, l'API peut être appelée

Aperçu de la Leçon Suivante ​

La leçon suivante couvre la Phase Validation.

Vous apprendrez :

  • Comment valider la qualité du code généré
  • Installation des dépendances et vérification des types
  • Validation du Prisma Schema
  • Génération de rapports de validation

Annexe : Référence du Code Source ​

Cliquez pour voir l'emplacement du code source

Dernière mise à jour : 2026-01-29

FonctionnalitéChemin du FichierLigne
Définition Code Agentagents/code.agent.md1-82
Code Skillskills/code/skill.md1-1488
Template Backendskills/code/references/backend-template.md1-670
Template Frontendskills/code/references/frontend-template.md1-1231
Définition du Pipelinepipeline.yaml63-77

Contraintes Clés :

  • Implémenter uniquement les fonctionnalités du PRD et du UI Schema (code.agent.md:25)
  • Interdiction d'ajouter l'authentification, l'autorisation ou la gestion d'état complexe (code.agent.md:28)
  • Doit lire complètement les fichiers de template (code/skill.md:1476)
  • Toutes les opérations de base de données via la couche Service (backend-template.md:665)
  • Toutes les entrées doivent être validées par Zod (backend-template.md:666)

Checklist Clé :

  • Éléments obligatoires backend : variables d'environnement, verrouillage des dépendances, définitions de types (code.agent.md:37-47)
  • Éléments obligatoires frontend : dépendances principales, chemins d'importation, fichiers de configuration (code.agent.md:50-64)
  • Prévention des erreurs courantes (code.agent.md:65-74)