🎓 Academy UntelcomUntelcom.comToutes les formations
Untelcom Academy · Module N°1 · Formation N°1 · Chapitre 1/5

Repository, projet, fichier, dossier, dépendance.

Formation gratuite « Architecte-Entrepreneur SaaS augmenté par IA »
✓ Cours 100 % gratuit, offert par Untelcom — untelcom.com
▶ Suivre ce cours en interactif (QCM, progression)
PROJET LOGICIELle système complet• code source• fichiers de configuration• dépendances• tests• scripts• documentation• infrastructureracine (root) :README · composer.jsonpackage.json · .envsuivi parGitREPOSITORY (dépôt)projet + historique des versionslocalvotre machinedistantGitHub…push/pullclone · push · pull · branchesGit = versioning · GitHub = plateformeutiliseDÉPENDANCES (logiciels externes)directes → transitives · production vs développementgérées par Composer / npm · verrouillées par un fichier lock

Statut : GRATUIT
Module N°1 : Langage technique, Git et culture développeur
Formation N°1 : Vocabulaire développeur indispensable
Chapitre : 1/5
QCM de ce chapitre : 6 questions
QCM de la formation complète : 30 questions
ID : m1f1c1

🚀Objectif du chapitre

Ce chapitre vous apprend à comprendre la structure fondamentale d’un logiciel avant même de parler de code, de Git, de commit ou de déploiement. Vous devez savoir ce qu’est un repository, ce qu’est un projet logiciel, comment sont organisés les fichiers, pourquoi les dossiers ont un rôle stratégique, et pourquoi les dépendances peuvent être à la fois une accélération, un risque, un coût et une dette technique.

À la fin de ce chapitre, vous devez être capable de regarder un projet ouvert dans VS Code, GitHub, Claude Code ou Codex, et comprendre immédiatement : où est le cœur du logiciel, où sont les fichiers critiques, où se trouvent les configurations, quelles dépendances sont utilisées, et quels éléments ne doivent jamais être modifiés sans contrôle.


1Pourquoi ce chapitre est fondamental

Avant d’apprendre à demander à Claude Code ou Codex de modifier un logiciel, il faut comprendre ce qu’ils manipulent.

Un logiciel n’est pas “un site” ou “une application” de manière abstraite. Un logiciel est un ensemble organisé de fichiers, dossiers, configurations, dépendances, règles métier, tests, scripts et documents techniques. Si cette organisation est propre, le logiciel peut évoluer. Si elle est confuse, chaque modification devient risquée.

Un entrepreneur qui ne comprend pas cette structure dépend entièrement des développeurs ou de l’IA. Il peut demander une modification, mais il ne sait pas si l’IA a modifié le bon fichier, ajouté une dépendance inutile, touché à une configuration critique ou cassé une partie du projet.

Votre objectif n’est pas de devenir développeur manuel. Votre objectif est plus stratégique : devenir capable de piloter un logiciel comme un dirigeant produit-tech.

Cela commence par une compétence simple mais décisive : savoir lire la structure d’un projet.

Un dépôt bien organisé est un actif.
Un dépôt désordonné est une dette.
Un dépôt incompris est un risque.


2📘Définition : qu’est-ce qu’un projet logiciel ?

Un projet logiciel est l’ensemble des éléments nécessaires pour concevoir, exécuter, tester, maintenir et faire évoluer un logiciel.

Un projet logiciel peut être :

un site vitrine ;

une application SaaS ;

une API ;

une application mobile ;

un back-office ;

une marketplace ;

un outil interne ;

une PWA ;

un module de facturation ;

un moteur de signature ;

un CRM ;

un logiciel métier comme Enytrack, Enysign ou Livre de Police.

Mais dans tous les cas, un projet logiciel contient généralement plusieurs familles d’éléments.

Il contient d’abord du code source. Le code source est le texte écrit dans un langage informatique. Il décrit ce que le logiciel doit faire. Par exemple, il peut contenir les règles pour créer un compte, enregistrer un véhicule, envoyer un email, générer une facture ou vérifier un paiement.

Il contient ensuite des fichiers de configuration. Ces fichiers disent au logiciel comment se comporter : quelle base de données utiliser, quel serveur SMTP appeler, quel environnement charger, quelles routes exposer, quelles dépendances installer.

Il contient aussi des dépendances. Une dépendance est un morceau de logiciel externe utilisé par votre projet. Par exemple : une librairie pour générer un PDF, envoyer des emails, gérer Stripe, créer des formulaires, sécuriser une authentification ou compiler du JavaScript.

Il peut contenir des tests. Les tests servent à vérifier que le logiciel continue à fonctionner après une modification.

Il peut contenir des scripts. Un script est une commande ou un fichier qui automatise une tâche : installer le projet, lancer le serveur local, vider le cache, migrer la base de données, compiler les assets, lancer les tests.

Il contient souvent de la documentation. La documentation explique comment installer, utiliser, déployer ou maintenir le logiciel.

Il contient parfois des éléments d’infrastructure : Dockerfile, docker-compose, fichiers CI/CD, configuration serveur, configuration de déploiement.

Donc un projet logiciel n’est pas seulement “du code”. C’est un système complet.


3📘Définition : qu’est-ce qu’un repository ?

Un repository, souvent abrégé en repo, est un espace où le projet est stocké, organisé et suivi dans le temps.

En français, on peut dire dépôt de code, mais dans le métier on utilise très souvent le mot anglais : repository ou repo.

Un repository contient les fichiers du projet, mais il contient surtout l’historique des modifications grâce à Git.

Git est un outil de versioning. Le versioning consiste à garder une trace des changements successifs du projet. Sans versioning, vous avez seulement un dossier avec des fichiers. Avec Git, vous avez un dossier avec mémoire, historique, versions, branches et possibilité de revenir en arrière.

Il faut distinguer trois notions :

Le projet : le logiciel lui-même, avec sa logique, ses objectifs, ses fonctionnalités.

Le dossier local : la copie du projet sur votre ordinateur.

Le repository Git : le projet suivi par Git, avec historique et versions.

Exemple concret :

Vous avez Enytrack sur votre ordinateur dans un dossier :

/Users/monsieur/Projects/enytrack

Ce dossier contient les fichiers du projet. Si ce dossier est suivi par Git, il devient un repository local.

Si ce même projet est aussi envoyé sur GitHub, vous avez un repository distant.

Le repository local est sur votre machine.
Le repository distant est sur GitHub, GitLab, Bitbucket ou un autre service.

GitHub n’est donc pas Git. Git est l’outil de versioning. GitHub est une plateforme qui héberge des repositories Git et facilite la collaboration, les issues, les pull requests, les branches, les revues et les automatisations.

Cette distinction est fondamentale.

Quand Claude Code travaille sur votre machine, il travaille souvent dans le repository local.
Quand Codex ou GitHub Copilot travaille via GitHub, il peut travailler sur une branche du repository distant.
Quand vous faites une sauvegarde professionnelle du code, vous devez penser repository distant, branches, tags et historique.


4Repository local et repository distant

Un repository local est la version du projet présente sur votre ordinateur ou dans votre environnement de développement.

Un repository distant est la version stockée sur un service comme GitHub.

La relation entre les deux est essentielle.

Quand vous récupérez un projet depuis GitHub vers votre ordinateur, on dit que vous faites un clone.

Quand vous envoyez vos modifications locales vers GitHub, on dit que vous faites un push.

Quand vous récupérez les modifications faites ailleurs vers votre machine, on dit que vous faites un pull.

Même si vous ne tapez pas ces commandes vous-même, vous devez comprendre la logique.

Pour travailler proprement avec Claude Code ou Codex, vous devez toujours savoir :

sur quel repository on travaille ;

sur quelle branche on travaille ;

quels fichiers ont été modifiés ;

si les modifications sont seulement locales ou déjà envoyées sur GitHub ;

si une pull request existe ;

si les tests ont été exécutés ;

si la branche peut être fusionnée ;

si un rollback est possible.

Un dirigeant qui comprend cela contrôle beaucoup mieux ses projets.


5La racine du projet : le “root”

La racine du projet, souvent appelée root, est le dossier principal du projet.

C’est le niveau le plus haut du repository. C’est là qu’on trouve généralement les fichiers de configuration majeurs.

Exemple de structure simplifiée :

enytrack/
├── README.md
├── composer.json
├── package.json
├── .env.example
├── .gitignore
├── src/
├── config/
├── templates/
├── public/
├── assets/
├── migrations/
├── tests/
└── docs/

Ici, enytrack/ est la racine du projet.

Les fichiers directement à la racine sont souvent très importants. Ils servent à comprendre le projet rapidement.

Par exemple :

README.md explique le projet.

composer.json liste les dépendances PHP, souvent dans un projet Symfony ou Laravel.

package.json liste les dépendances JavaScript, souvent pour le front-end.

.env.example montre les variables d’environnement nécessaires.

.gitignore indique quels fichiers Git ne doit pas suivre.

docker-compose.yml décrit parfois les services nécessaires : base de données, serveur, cache, mailer, etc.

Dockerfile décrit comment construire l’environnement applicatif.

Un bon réflexe professionnel consiste toujours à commencer par la racine du projet. Avant de demander à Claude Code de modifier un module, il faut savoir quel type de projet vous avez sous les yeux.

Est-ce un projet Symfony ?
Un projet Laravel ?
Un projet Node ?
Un projet React ?
Un projet Next.js ?
Un projet Astro ?
Un projet WordPress ?
Un projet hybride ?
Un monolithe ?
Une API ?
Une PWA ?
Un simple site statique ?

La racine donne souvent la réponse.


6📘Définition : qu’est-ce qu’un fichier ?

Un fichier est une unité de contenu stockée dans le projet.

Un fichier peut contenir :

du code ;

du texte ;

de la configuration ;

des données ;

une image ;

un style CSS ;

un script ;

un modèle HTML ;

une migration de base de données ;

un test ;

une documentation.

Un fichier est identifié par son nom et souvent par son extension.

L’extension est la partie après le point.

Exemples :

.php : fichier PHP.
.js : fichier JavaScript.
.ts : fichier TypeScript.
.css : fichier CSS.
.html : fichier HTML.
.twig : template Twig, souvent utilisé avec Symfony.
.json : fichier de données ou configuration.
.yaml ou .yml : fichier de configuration.
.md : fichier Markdown, souvent documentation.
.sql : fichier SQL.
.env : fichier de variables d’environnement.
.lock : fichier de verrouillage des dépendances.

Un fichier n’est pas neutre. Dans un projet sérieux, chaque fichier doit avoir une responsabilité claire.

Une erreur fréquente dans les projets mal structurés est d’avoir des fichiers trop longs, trop génériques ou mal nommés. Par exemple :

functions.php avec 3 000 lignes ;

utils.js qui contient tout et n’importe quoi ;

new-file-test-final-ok-v2.php ;

style-old-copy.css ;

controller.php qui gère toutes les pages du site.

Ces signaux indiquent un projet qui manque de structure.

À l’inverse, un projet propre utilise des noms explicites.

Exemples :

InvoiceController.php : contrôleur lié aux factures.

PaymentService.php : service lié aux paiements.

VehicleRepository.php : accès aux données des véhicules.

CreateCustomerCommand.php : commande pour créer un client.

DocumentSignatureService.php : logique liée à la signature de documents.

Un bon nom de fichier doit permettre de comprendre son rôle sans ouvrir le fichier.


7📘Définition : qu’est-ce qu’un dossier ?

Un dossier est un contenant qui regroupe des fichiers.

Dans un projet logiciel, les dossiers ne servent pas seulement à ranger. Ils structurent la pensée du projet.

Un dossier peut représenter :

une couche technique ;

un domaine métier ;

un type de fichier ;

une responsabilité ;

une fonctionnalité ;

un environnement ;

une documentation.

Exemple de dossiers fréquents :

src/ : code source principal.

config/ : configuration du projet.

public/ : fichiers accessibles publiquement par le navigateur.

templates/ : fichiers de rendu HTML.

assets/ : fichiers front-end sources, CSS, JS, images.

migrations/ : évolutions de la base de données.

tests/ : tests automatisés.

docs/ : documentation.

var/ : cache, logs ou fichiers générés selon les frameworks.

vendor/ : dépendances PHP installées par Composer.

node_modules/ : dépendances JavaScript installées par npm/yarn/pnpm.

Il faut comprendre une chose capitale : certains dossiers doivent être modifiés par vous ou par Claude Code ; d’autres ne doivent presque jamais être modifiés directement.

Par exemple, dans un projet PHP :

src/ peut être modifié.

templates/ peut être modifié.

config/ peut être modifié avec prudence.

migrations/ peut être modifié avec prudence.

vendor/ ne doit pas être modifié manuellement, car il contient des dépendances externes.

Dans un projet JavaScript :

src/ peut être modifié.

components/ peut être modifié.

pages/ ou app/ peut être modifié selon le framework.

node_modules/ ne doit pas être modifié manuellement.

Cette distinction vous protège.

Si Claude Code modifie directement vendor/ ou node_modules/, c’est généralement un signal d’alerte. Ces dossiers sont générés par les gestionnaires de dépendances. On ne corrige pas une librairie externe en modifiant son dossier installé, sauf cas extrêmement particulier et contrôlé.


8Chemin de fichier : path, chemin relatif, chemin absolu

Un fichier se trouve à un emplacement précis dans le projet. Cet emplacement s’appelle un chemin, ou path.

Exemple :

src/Controller/InvoiceController.php

Ce chemin signifie :

dans le dossier src,
puis dans le dossier Controller,
se trouve le fichier InvoiceController.php.

Un chemin relatif est un chemin exprimé depuis le dossier actuel ou depuis la racine du projet.

Exemple :

templates/invoice/show.html.twig

Un chemin absolu est un chemin complet depuis la racine du système de fichiers.

Exemple :

/Users/monsieur/Projects/enytrack/templates/invoice/show.html.twig

Dans vos échanges avec Claude Code ou Codex, il faut utiliser les chemins de fichiers quand vous voulez être précis.

Mauvaise instruction :

“Corrige la page facture.”

Bonne instruction :

“Analyse et corrige uniquement les fichiers liés à l’affichage facture, notamment src/Controller/InvoiceController.php et les templates dans templates/invoice/. Ne modifie pas le module paiement.”

Un bon vocabulaire réduit les erreurs de l’IA.


9📘Définition : qu’est-ce qu’une dépendance ?

Une dépendance est un logiciel externe utilisé par votre projet.

Votre projet dépend de cette dépendance pour fonctionner.

Exemples de dépendances :

un framework comme Symfony, Laravel, Next.js ;

une librairie pour envoyer des emails ;

une librairie pour générer des PDF ;

un SDK Stripe ;

une librairie de validation de formulaire ;

un package de sécurité ;

un outil de test ;

un outil de compilation CSS ;

un composant UI ;

un client API.

Une dépendance peut accélérer énormément le développement. Mais elle peut aussi introduire des risques.

Chaque dépendance ajoute au projet :

du code externe ;

des mises à jour à suivre ;

des failles potentielles ;

des changements de version ;

des problèmes de compatibilité ;

une possible dette technique ;

une dépendance à un mainteneur externe ;

parfois un coût commercial ;

parfois une contrainte de licence.

La règle professionnelle est simple :

On n’ajoute jamais une dépendance parce que c’est pratique. On l’ajoute parce que le bénéfice est supérieur au coût et au risque.

Dans un projet SaaS sérieux, une dépendance doit être justifiée.


10Dépendance directe et dépendance transitive

Il existe deux types importants de dépendances.

Une dépendance directe est une dépendance que votre projet déclare explicitement.

Exemple : vous installez Stripe SDK. Stripe SDK est une dépendance directe.

Une dépendance transitive est une dépendance utilisée par une dépendance.

Exemple : Stripe SDK peut lui-même utiliser d’autres packages. Ces packages deviennent des dépendances transitives.

C’est important parce qu’un projet peut avoir 20 dépendances directes mais 500 dépendances transitives.

Vous ne les avez pas choisies directement, mais elles sont présentes dans le projet.

Cela crée un risque appelé supply chain risk, ou risque de chaîne d’approvisionnement logicielle. Cela signifie qu’une faille ou une compromission dans un package externe peut affecter votre projet.

Un entrepreneur SaaS n’a pas besoin d’être expert cybersécurité pour comprendre cela. Mais il doit savoir poser les bonnes questions :

cette dépendance est-elle connue ?

est-elle maintenue ?

a-t-elle beaucoup de dépendances transitives ?

est-elle nécessaire ?

peut-on faire plus simple ?

a-t-elle des failles connues ?

quelle licence utilise-t-elle ?

est-elle utilisée en production ou seulement en développement ?


11Gestionnaires de dépendances

Les dépendances sont généralement installées par des outils appelés gestionnaires de dépendances, ou package managers.

Quelques exemples :

Composer pour PHP.

npm, Yarn ou pnpm pour JavaScript/TypeScript.

pip ou Poetry pour Python.

Maven ou Gradle pour Java.

Cargo pour Rust.

Bundler pour Ruby.

Dans un projet Symfony, vous verrez souvent :

composer.json
composer.lock
vendor/

Dans un projet JavaScript ou React/Next/Astro, vous verrez souvent :

package.json
package-lock.json
node_modules/

Le fichier composer.json ou package.json déclare les dépendances souhaitées.

Le fichier composer.lock ou package-lock.json verrouille les versions exactes installées.

Le dossier vendor/ ou node_modules/ contient les dépendances installées.

Il faut comprendre le rôle des fichiers lock.

Un fichier lock est une preuve de stabilité. Il évite que deux machines installent des versions différentes des dépendances.

Sans fichier lock, un projet peut fonctionner sur l’ordinateur A et casser sur l’ordinateur B, simplement parce qu’une dépendance a changé de version.

Dans un projet professionnel, le fichier lock doit généralement être conservé dans Git. Il garantit que l’environnement est reproductible.


12Dépendance de production et dépendance de développement

Toutes les dépendances n’ont pas le même rôle.

Une dépendance de production est nécessaire pour faire fonctionner le logiciel en production.

Exemple : Stripe SDK si votre site encaisse des paiements.

Une dépendance de développement est utile seulement pour développer, tester, analyser ou compiler.

Exemple : un outil de test, un outil de formatage, un outil de linting.

Dans package.json, on distingue souvent :

dependencies : dépendances nécessaires au fonctionnement.

devDependencies : dépendances nécessaires au développement.

Cette différence est importante pour la performance, la sécurité et la simplicité.

Un projet trop chargé en dépendances inutiles devient plus lourd, plus fragile et plus difficile à maintenir.

Votre règle doit être :

Chaque dépendance doit avoir un rôle clair.

Si personne n’est capable d’expliquer pourquoi une dépendance existe, elle doit être questionnée.


13Versioning des dépendances

Les dépendances ont des versions.

Exemple :

stripe/stripe-php: 16.0.0
symfony/framework-bundle: 7.2.0
react: 19.0.0

Une version suit souvent une convention appelée Semantic Versioning, ou SemVer.

Le format courant est :

MAJOR.MINOR.PATCH

Exemple :

3.7.4

3 est la version majeure.
7 est la version mineure.
4 est le patch.

En principe :

un changement de PATCH corrige un bug sans changer le comportement attendu ;

un changement de MINOR ajoute des fonctionnalités compatibles ;

un changement de MAJOR peut introduire des changements cassants.

Un changement cassant signifie qu’une ancienne manière d’utiliser la dépendance peut ne plus fonctionner.

Exemple simple :

Passer de version 2 à version 3 peut exiger des modifications dans votre code.

C’est pourquoi il ne faut jamais demander naïvement :

“Mets toutes les dépendances à jour.”

La bonne demande est :

“Analyse les dépendances obsolètes et vulnérables. Propose une mise à jour progressive, en distinguant patch, minor et major. Ne fais pas de major upgrade sans plan de migration, tests et rollback.”


14Les fichiers de configuration critiques

Un projet logiciel contient souvent des fichiers qui ne sont pas directement du code métier, mais qui contrôlent le comportement du projet.

Ces fichiers sont critiques.

Exemples :

.env : variables d’environnement réelles, souvent avec secrets.

.env.example : modèle sans secret.

.gitignore : fichiers à exclure de Git.

composer.json : dépendances PHP.

composer.lock : versions exactes PHP.

package.json : dépendances et scripts JavaScript.

package-lock.json : versions exactes JavaScript.

docker-compose.yml : services locaux ou de déploiement.

Dockerfile : construction d’un conteneur.

README.md : documentation principale.

phpunit.xml : configuration des tests PHP.

vite.config.js : configuration de build front-end.

tsconfig.json : configuration TypeScript.

.github/workflows/ : pipelines GitHub Actions.

Ces fichiers doivent être traités avec prudence. Une petite modification peut casser l’installation, la compilation, les tests ou la production.

Par exemple, modifier .env peut casser la connexion à la base de données.
Modifier package.json peut changer les scripts de build.
Modifier composer.json peut ajouter ou retirer une dépendance critique.
Modifier .github/workflows/deploy.yml peut casser le déploiement automatique.

Vous devez donc demander à Claude Code/Codex de signaler toute modification sur ces fichiers.

Instruction recommandée :

“Tout changement sur un fichier de configuration racine doit être explicitement listé et justifié dans le rapport final.”


15Les fichiers secrets : attention absolue

Un fichier secret contient des informations sensibles.

Exemples :

mot de passe base de données ;

clé API Stripe ;

clé Brevo ;

secret JWT ;

clé OpenAI ;

clé de chiffrement ;

token GitHub ;

identifiant SMTP ;

secret webhook.

Ces informations sont souvent stockées dans .env.

Un fichier .env réel ne doit pas être envoyé sur GitHub public. Il ne doit pas être partagé dans une conversation, un ticket ou une capture d’écran.

Le fichier .env.example, en revanche, peut être partagé. Il sert de modèle sans les vraies valeurs.

Exemple :

DATABASE_URL=
STRIPE_SECRET_KEY=
BREVO_API_KEY=
APP_SECRET=

Le principe est simple :

.env = secrets réels, privé.
.env.example = structure attendue, partageable.

Si Claude Code ou Codex vous demande de coller des clés API dans un prompt, il faut éviter. Il faut utiliser des variables d’environnement, jamais exposer les secrets dans le code.

Règle à apprendre par cœur :

Un secret ne doit jamais être écrit en dur dans le code.

Un secret écrit en dur est une faille.


16Structure propre contre structure confuse

Une structure propre permet de comprendre, maintenir, tester et faire évoluer.

Une structure confuse ralentit tout et augmente les risques.

Exemple de structure confuse :

project/
├── index.php
├── test.php
├── test2.php
├── functions.php
├── old/
├── new/
├── final/
├── final2/
├── assets2/
├── backup/
├── code/
├── real-code/
└── temp/

Cette structure inspire peu confiance. Elle montre une absence de méthode.

Exemple de structure plus professionnelle :

project/
├── README.md
├── composer.json
├── package.json
├── .env.example
├── src/
│   ├── Controller/
│   ├── Entity/
│   ├── Repository/
│   ├── Service/
│   └── Security/
├── config/
├── templates/
├── assets/
├── public/
├── migrations/
├── tests/
└── docs/

Ici, on comprend immédiatement les grandes zones du projet.

La structure n’est pas une décoration. C’est une architecture de travail.

Quand vous travaillez avec l’IA, une bonne structure augmente la qualité des résultats. L’IA comprend mieux où intervenir. Elle évite davantage les modifications hors périmètre. Elle peut produire des changements plus localisés.

Un projet désordonné rend l’IA moins fiable.


17Cohésion et couplage : deux notions de haut niveau

Pour progresser vers un niveau professionnel élevé, vous devez connaître deux notions : cohésion et couplage.

La cohésion mesure à quel point les éléments d’un fichier ou d’un dossier appartiennent au même sujet.

Un fichier très cohésif fait une chose claire.

Exemple :

InvoiceService.php contient la logique de facturation. C’est cohérent.

Un fichier peu cohésif fait trop de choses.

Exemple :

GlobalService.php contient factures, emails, paiements, utilisateurs, véhicules. C’est mauvais.

Le couplage mesure à quel point une partie du logiciel dépend d’une autre.

Un couplage faible est généralement préférable. Cela signifie qu’on peut modifier une partie sans casser tout le système.

Un couplage fort rend le logiciel fragile. Si modifier une page facture casse le paiement, le stock, les emails et le tableau de bord, le couplage est trop fort.

Dans un SaaS comme Enytrack, il faut rechercher :

forte cohésion dans chaque module ;

couplage maîtrisé entre modules ;

interfaces claires entre domaines ;

pas de logique métier dispersée partout.

C’est une notion d’architecture essentielle.


18Repository et intelligence artificielle : pourquoi l’organisation devient encore plus importante

Avec Claude Code et Codex, la vitesse de production augmente. Mais si la structure du repository est mauvaise, l’IA produit plus vite dans le désordre.

L’IA peut :

modifier trop de fichiers ;

ajouter une dépendance inutile ;

dupliquer une logique existante ;

créer une nouvelle structure parallèle ;

contourner une règle métier existante ;

casser des tests ;

modifier une configuration sensible ;

ajouter un fichier au mauvais endroit ;

inventer une architecture non alignée avec le projet.

Votre rôle est de donner un cadre.

Avant toute mission IA, vous devez demander :

  1. Analyse la structure du repository.
  2. Identifie la stack technique.
  3. Liste les fichiers probablement concernés.
  4. Ne modifie rien avant d’avoir proposé un plan.
  5. Indique les fichiers à risque.
  6. N’ajoute aucune dépendance sans justification.
  7. Ne modifie pas les fichiers de configuration racine sans autorisation.
  8. Travaille sur une branche dédiée.
  9. Ajoute ou adapte les tests.
  10. Fournis un rapport final avec les fichiers modifiés.

Ce cadre transforme l’IA en exécutant contrôlé.

Sans cadre, l’IA devient un accélérateur de chaos.


19Les dépendances comme décision stratégique

Un débutant voit une dépendance comme une solution rapide.
Un professionnel voit une dépendance comme un contrat de long terme.

Avant d’accepter une dépendance, il faut poser plusieurs questions.

La dépendance est-elle nécessaire ?
Peut-on faire plus simple avec le framework existant ?
Est-elle maintenue ?
Est-elle populaire ou reconnue ?
A-t-elle des failles connues ?
Sa licence est-elle compatible avec un usage commercial ?
Est-elle légère ?
Ajoute-t-elle beaucoup de dépendances transitives ?
Sera-t-elle encore maintenue dans deux ans ?
Peut-on la retirer facilement si besoin ?
Est-elle utilisée en production ?
Apporte-t-elle une vraie valeur métier ?

Exemple :

Pour générer un PDF fiscal ou un dossier de preuve, une dépendance PDF robuste peut être justifiée.

Pour afficher un simple bouton ou une petite animation, ajouter une grosse librairie front-end est souvent injustifié.

Dans votre logique d’entreprise, chaque dépendance doit être vue comme un coût de maintenance potentiel.

Règle :

Moins de dépendances, mais de meilleures dépendances.

20Ce qu’un repository professionnel doit contenir

Un repository professionnel doit idéalement contenir :

un README.md clair ;

un fichier d’exemple d’environnement ;

des dépendances déclarées proprement ;

un fichier lock ;

une structure cohérente ;

un dossier de tests ;

une documentation minimale ;

une configuration Git propre ;

des scripts d’installation et de test ;

une politique claire sur les secrets ;

des règles de contribution si plusieurs personnes ou IA travaillent dessus ;

des instructions projet pour les agents IA si vous utilisez Codex/Claude Code ;

des fichiers de CI/CD si le projet est industrialisé ;

un historique Git propre.

Dans vos projets ENYWERE, il faudra tendre vers ce standard.

Un repository qui ne peut pas être installé, compris, testé ou déployé proprement est un risque opérationnel.


21La méthode de lecture d’un repository en 10 étapes

Quand vous ouvrez un nouveau projet, suivez toujours cette méthode.

Étape 1 : regarder la racine du projet.

Étape 2 : ouvrir README.md.

Étape 3 : identifier la stack technique avec les fichiers racine.

Étape 4 : repérer les dépendances dans composer.json, package.json, ou équivalent.

Étape 5 : repérer les dossiers principaux : src, config, public, templates, tests.

Étape 6 : repérer les fichiers secrets ou modèles d’environnement.

Étape 7 : chercher s’il existe des tests.

Étape 8 : chercher s’il existe une documentation.

Étape 9 : chercher s’il existe une configuration de déploiement ou CI/CD.

Étape 10 : demander à l’IA un rapport de structure avant toute modification.

Prompt utile :

“Analyse la structure de ce repository sans modifier de fichier. Identifie la stack technique, les dossiers principaux, les fichiers critiques, les dépendances majeures, les scripts disponibles, les risques apparents et les zones à ne pas modifier sans validation. Réponds sous forme de rapport clair.”

Ce prompt doit devenir un réflexe.


22⚠️Les erreurs fréquentes à éviter

Erreur n°1 : confondre projet et repository.

Le projet est le logiciel. Le repository est son contenant versionné.

Erreur n°2 : modifier des fichiers générés.

Ne modifiez pas manuellement vendor/, node_modules/, fichiers de cache ou fichiers compilés sauf cas exceptionnel.

Erreur n°3 : ajouter une dépendance pour un besoin mineur.

Chaque dépendance augmente le risque.

Erreur n°4 : ne pas lire les fichiers racine.

Les fichiers racine expliquent souvent comment le projet fonctionne.

Erreur n°5 : exposer un fichier .env.

Un .env réel peut contenir des secrets.

Erreur n°6 : laisser Claude Code modifier trop de fichiers sans plan.

Plus le changement est large, plus le risque augmente.

Erreur n°7 : accepter une structure “temporaire”.

Les dossiers old, new, final, copy, backup dans le repository principal créent du désordre.

Erreur n°8 : ne pas savoir où se trouve la logique métier.

Dans un SaaS sérieux, la logique métier doit être localisable.

Erreur n°9 : ne pas distinguer dépendance de production et dépendance de développement.

Cela peut alourdir ou fragiliser la production.

Erreur n°10 : croire que si le logiciel s’affiche, il est bien structuré.

Un logiciel peut “marcher” en apparence et être très fragile en profondeur.


23À apprendre par cœur

Repository : dépôt contenant le projet suivi par Git avec historique des changements.

Projet logiciel : ensemble des fichiers, configurations, dépendances, tests, documentation et scripts nécessaires à un logiciel.

Racine du projet : dossier principal du projet, là où se trouvent souvent les fichiers de configuration majeurs.

Fichier : unité de contenu dans le projet.

Dossier : conteneur logique qui organise les fichiers selon une responsabilité.

Chemin de fichier : emplacement d’un fichier dans la structure du projet.

Dépendance : logiciel externe utilisé par votre projet.

Dépendance directe : dépendance déclarée explicitement par le projet.

Dépendance transitive : dépendance utilisée par une autre dépendance.

Package manager : outil qui installe et gère les dépendances.

Fichier lock : fichier qui verrouille les versions exactes des dépendances.

Variable d’environnement : valeur de configuration externe au code.

Secret : information sensible comme une clé API, un mot de passe ou un token.

Cohésion : qualité d’un fichier ou module qui a une responsabilité claire.

Couplage : niveau de dépendance entre deux parties du logiciel.


24🎯Ce qu’il faut comprendre profondément

Un repository n’est pas seulement un dossier. C’est le centre de contrôle technique d’un logiciel.

Une structure de dossiers n’est pas seulement du rangement. C’est une décision d’architecture.

Un fichier mal placé ou mal nommé rend le projet plus difficile à comprendre.

Une dépendance n’est jamais gratuite. Elle apporte de la vitesse, mais aussi du risque, de la maintenance et parfois de la dette.

Un fichier de configuration peut être aussi critique qu’un fichier de code.

Un fichier secret exposé peut créer une faille grave.

Un projet propre permet à Claude Code et Codex de mieux travailler.

Un projet mal organisé réduit la fiabilité de l’IA.

Un entrepreneur SaaS doit savoir auditer la structure d’un repository avant de demander des modifications.

Le but n’est pas de tout coder. Le but est de savoir ce qui est propre, risqué, inutile ou dangereux.


25Checklist opérationnelle avant de demander une modification à Claude Code ou Codex

Avant chaque mission, vérifiez :

Le repository est-il identifié ?

La branche de travail est-elle claire ?

La stack technique est-elle comprise ?

Les dossiers principaux sont-ils repérés ?

Les fichiers concernés sont-ils listés ?

Les fichiers sensibles sont-ils exclus du périmètre ?

Les dépendances actuelles sont-elles connues ?

L’ajout de dépendance est-il interdit sans justification ?

Le fichier .env est-il protégé ?

Le changement demandé est-il limité ?

Les tests attendus sont-ils définis ?

Le rapport final est-il exigé ?

Une stratégie de rollback est-elle possible ?

Si vous ne pouvez pas répondre à ces questions, la mission est encore trop floue.


26🤖Prompt modèle pour analyser un repository

À utiliser avec Claude Code ou Codex avant une grosse modification :

Analyse ce repository sans modifier aucun fichier.

Objectif :
Comprendre la structure du projet avant toute intervention.

Tu dois identifier :
1. La stack technique principale.
2. Les fichiers racine importants.
3. Les dossiers principaux et leur rôle.
4. Les dépendances majeures.
5. Les scripts disponibles.
6. Les fichiers de configuration sensibles.
7. Les zones à ne pas modifier sans validation.
8. Les tests existants.
9. Les risques visibles dans l’organisation du projet.
10. Les recommandations de nettoyage ou de clarification, sans appliquer de changement.

Contraintes :
- Ne modifie aucun fichier.
- Ne crée aucun fichier.
- Ne lance aucune migration.
- Ne supprime rien.
- Ne propose pas de refonte globale sans justification.

Format attendu :
Rapport structuré avec :
- Vue d’ensemble.
- Structure du projet.
- Fichiers critiques.
- Dépendances.
- Risques.
- Recommandations.

Ce prompt est simple, mais il change tout. Il force l’IA à observer avant d’agir.


27🎯Synthèse du chapitre

Un projet logiciel est un système organisé.
Un repository est le contenant versionné de ce système.
Les fichiers sont les unités de contenu.
Les dossiers structurent la responsabilité.
Les dépendances accélèrent le développement mais ajoutent du risque.
Les fichiers de configuration pilotent le comportement du projet.
Les fichiers secrets doivent être protégés.
La structure du repository influence directement la qualité du travail de Claude Code et Codex.
Un dirigeant SaaS compétent sait lire un repository avant de demander une modification.

Le niveau professionnel commence ici : ne pas seulement demander “fais-moi une fonctionnalité”, mais comprendre dans quel système cette fonctionnalité va entrer.


Cette formation est offerte par Untelcom

Untelcom est un studio logiciel senior : conception de SaaS, applications métier, sites performants, automatisations et IA. Vous préférez qu'on construise votre logiciel pour vous ?

Voir untelcom.comParler d'un projet
© Untelcom Academy — Formation gratuite « Architecte-Entrepreneur SaaS augmenté par IA ».
Retrouvez toutes nos formations sur untelcom.com/academy et nos services sur untelcom.com.