### 1. **Code Guidelines pour N3WT-SCHOOL** #### **Back-end (Python Django)** - **Style** : Adoptez **PEP 8** (https://peps.python.org/pep-0008/) (style standard pour Python) avec des ajustements pour vos besoins spécifiques. Utilisez **Black** pour le formatage automatique. - **Documentation** : Utilisez des docstrings conformes à la convention SWAGGER (https://www.geeksforgeeks.org/python-swagger-annotations-for-api-documentation/). - **Imports** : - Regroupez par sections (bibliothèques standard, dépendances externes, imports internes). - Utilisez des imports explicites, pas de wildcard (`from module import *`). - **Nom des variables** : Suivez un style **snake_case** pour les noms de variables et de fonctions. - Path patterns: **/*.py #### **Front-end (Next.js avec React et TailwindCSS)** - **Structure des fichiers** : - Un composant = un fichier, placé dans `/components` ou `/pages` selon le cas. - Utilisez des hooks personnalisés pour éviter de dupliquer la logique. - **Style** : - Utilisez TailwindCSS avec des classes utilitaires dans le fichier JSX directement. - Favorisez une approche **mobile-first**. - **Nom des fichiers** : - Composants React : **PascalCase** (e.g., `StudentForm.jsx`). - Variables et fonctions : **camelCase**. - **Linting** : - Activez ESLint avec des règles adaptées à Next.js. - Ajoutez **Prettier** pour formater automatiquement le code. - **Commentaires** : Expliquez uniquement la logique complexe dans des commentaires succincts. Path patterns: **/*.ts, **/*.js, **/*.jsx, **/*.tsx --- ### 2. **Commit Guidelines (Conventionnel)** Les messages de commits se basent sur **Conventional Commits** (https://www.conventionalcommits.org/en/v1.0.0/) , pour une meilleure gestion des versions et une génération automatique du changelog. #### **Format standard** : ``` (): [#] ``` - **Types autorisés** : - `feat` : Nouvelle fonctionnalité. - `fix` : Correction d’un bug. - `docs` : Modifications liées à la documentation. - `style` : Mise en forme du code (pas de changements fonctionnels). - `refactor` : Refactorisation sans ajout de fonctionnalités ni correction de bugs. - `test` : Ajout ou modification de tests. - `chore` : Maintenance ou tâches diverses (ex. mise à jour des dépendances). - **Scope (optionnel)** : Précisez une partie spécifique du projet (`backend`, `frontend`, `API`, etc.). - **Exemples** : ``` feat(frontend): ajout de la gestion des utilisateurs dans le dashboard [#1] fix(backend): correction du bug lié à l'authentification JWT [#1] docs: mise à jour du README avec les nouvelles instructions d’installation [#2] ``` - Template de commit message Dans le fichier .gitmessage.txt ajoutez le contenue suivant: ```sh (): [#] # Types: # - feat: Nouvelle fonctionnalité # - fix: Correction de bug # - docs: Documentation # - style: Changements esthétiques # - refactor: Refactorisation # - test: Ajout/modification de tests # - chore: Tâches diverses (e.g., mise à jour des dépendances) # # Scope: Optionnel (ex. backend, frontend, API) # # Ticket ID: Référence à un ticket ou une issue (ex. [#PROJ-123]) ``` Ajoutez cette configuration à votre fichier global .gitconfig : ``` git config commit.template .gitmessage.txt ``` Lors de chaque commit, le modèle s’affichera automatiquement. --- ### **Automatisation avec Commitlint** Vous pouvez configurer **Commitlint** pour forcer l'inclusion d'un ID de ticket dans chaque message de commit. #### **Étape 1 : Installer Commitlint et Husky** ```bash npm install --save-dev @commitlint/{config-conventional,cli} npm install --save-dev husky npx husky install ``` #### **Étape 2 : Configurer Commitlint** Créez un fichier `commitlint.config.js` : ```javascript module.exports = { extends: ['@commitlint/config-conventional'], rules: { 'subject-case': [0, 'always'], 'scope-enum': [2, 'always', ['frontend', 'backend', 'api', 'docs', 'ci', 'devops']], 'type-enum': [ 2, 'always', ['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore'] ] } }; ``` #### **Étape 3 : Configurer Husky pour le hook pre-commit** Ajoutez un hook avec Husky pour vérifier les commits : ```bash npx husky add .husky/commit-msg "npx --no-install commitlint --edit $1" ``` ---