Structure de Repository
Guide complet pour organiser et structurer un repository professionnel selon les meilleures pratiques
Structure de Repository
Une structure de repository bien organisée est essentielle pour le succès d'un projet de développement. Elle facilite la collaboration, la maintenance et la compréhension du code par toute l'équipe.
Architecture Recommandée
Structure des Dossiers
Voici la structure de base recommandée pour un repository professionnel :
projet/
├── .config/ # Fichiers de configuration
├── dep/ # Dépendances externes
├── doc/ # Documentation du projet
├── res/ # Ressources (images, assets)
├── samples/ # Exemples et démos
├── tools/ # Scripts et outils de développement
├── build/ # Fichiers de build (à exclure du git)
├── test/ # Tests unitaires et d'intégration
├── src/ # Code source principal
└── README.md # Documentation principale
Fichiers Essentiels
Fichiers de Configuration Git
.gitignore
- Exclusions des fichiers non désirés
# Dépendances
node_modules/
vendor/
# Builds
dist/
build/
*.exe
*.dll
# Logs
*.log
logs/
# Configuration locale
.env
.env.local
# Cache
.cache/
tmp/
.gitattributes
- Configuration des attributs de fichiers
# Auto detect text files and perform LF normalization
* text=auto
# Explicit declaration of binary files
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.pdf binary
.gitmodules
- Configuration des sous-modules Git (si applicable)
[submodule "external/library"]
path = external/library
url = https://github.com/example/library.git
Fichiers Docker
.dockerignore
- Exclusions pour les builds Docker
node_modules
npm-debug.log
Dockerfile*
docker-compose*
.dockerignore
.git
.gitignore
README.md
.env
.nyc_output
coverage
.nyc_output
Documentation
README.md
- Documentation principale du projet
Nom du Projet
Description
Description claire et concise du projet.
Installation
npm install
Utilisation
Instructions d'utilisation de base.
Contribution
Guidelines pour contribuer au projet.
Licence
Type de licence utilisée.
LICENCE.md
- Fichier de licence
MIT License
Copyright (c) [année] [nom]
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction...
Bonnes Pratiques
1. Organisation Logique
- Séparer clairement le code source, les tests, et la documentation
- Utiliser des noms de dossiers explicites et cohérents
- Éviter les niveaux d'imbrication trop profonds
2. Configuration Centralisée
- Regrouper tous les fichiers de configuration dans
.config/
- Utiliser des variables d'environnement pour les paramètres sensibles
- Documenter chaque fichier de configuration
3. Gestion des Dépendances
- Maintenir un fichier
package.json
ou équivalent à jour - Utiliser le dossier
dep/
pour les dépendances externes non gérées par un gestionnaire de paquets - Versionner les dépendances critiques
4. Documentation
- Maintenir un README.md complet et à jour
- Documenter l'API dans le dossier
doc/
- Inclure des exemples dans
samples/
5. Tests
- Séparer les tests par type (unitaires, intégration, e2e)
- Maintenir une couverture de tests élevée
- Inclure des tests de performance si nécessaire
Exemples Concrets
Projet Web Frontend
my-webapp/
├── .config/
│ ├── webpack.config.js
│ └── babel.config.js
├── public/
│ ├── index.html
│ └── favicon.ico
├── src/
│ ├── components/
│ ├── pages/
│ ├── hooks/
│ └── utils/
├── test/
│ ├── __mocks__/
│ └── components/
├── doc/
│ ├── api.md
│ └── deployment.md
└── package.json
Projet Backend API
my-api/
├── .config/
│ └── database.config.js
├── src/
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ ├── middleware/
│ └── utils/
├── test/
│ ├── unit/
│ └── integration/
├── doc/
│ ├── api-reference.md
│ └── database-schema.md
├── tools/
│ ├── migration.js
│ └── seed.js
└── server.js
Outils de Validation
Scripts de Vérification
Créer des scripts pour valider la structure :
#!/bin/bash
# tools/validate-structure.sh
echo "Validation de la structure du repository..."
# Vérifier les dossiers essentiels
required_dirs=("src" "test" "doc")
for dir in "${required_dirs[@]}"; do
if [ ! -d "$dir" ]; then
echo "❌ Dossier manquant: $dir"
exit 1
fi
done
# Vérifier les fichiers essentiels
required_files=("README.md" ".gitignore" "package.json")
for file in "${required_files[@]}"; do
if [ ! -f "$file" ]; then
echo "❌ Fichier manquant: $file"
exit 1
fi
done
echo "✅ Structure validée avec succès"
Template de Repository
Créer un template pour standardiser la création de nouveaux projets :
{
"name": "project-template",
"version": "1.0.0",
"scripts": {
"init": "node tools/init-project.js",
"validate": "bash tools/validate-structure.sh"
}
}
Ressources Complémentaires
- Guide GitHub pour organiser les repositories
- Convention Git Flow
- Semantic Versioning
- Keep a Changelog
Une structure de repository cohérente et bien documentée est la base d'un projet réussi. Elle facilite l'onboarding des nouveaux développeurs et améliore la productivité de l'équipe.