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


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.