Note importante : Ce guide détaille les procédures et conventions à suivre pour contribuer efficacement au projet Circographe. Veuillez le lire attentivement avant de commencer à travailler sur le code.
main (production)
├── staging (pré-production)
│ ├── develop (développement)
│ │ ├── feature/xxx
│ │ ├── bugfix/xxx
│ │ ├── refactor/xxx
│ │ └── deps/xxx
│ └── release/x.x.x
└── hotfix/xxx
main
: Code en production, stable et déployéstaging
: Code en pré-production pour les tests d'intégrationdevelop
: Branche principale de développement, intégration continue
feature-xxx
: Nouvelles fonctionnalités (ex:feature-user-authentication
)bugfix-xxx
: Corrections de bugs (ex:bugfix-login-error
)refacto-xxx
: Refactoring du code (ex:refacto-clean-user-model
)release-x.x.x
: Préparation des releases (ex:release-1.2.0
)hotfix-xxx
: Corrections urgentes en production (ex:hotfix-critical-security-fix
)docs-xxx
: Modifications de documentation uniquement (ex:docs-update-api-docs
)
Nous suivons les conventions Conventional Commits pour standardiser les messages de commit.
<type>(<scope>): <description>
[corps]
[footer]
feat
: Nouvelle fonctionnalitéfix
: Correction de bugdocs
: Documentationstyle
: Formatage, semi-colons manquants, etc.refactor
: Refactoring du codetest
: Ajout ou modification de testschore
: Maintenanceperf
: Amélioration de performanceci
: Modifications de la CIbuild
: Modifications du système de build
auth
: Authentificationcore
: Fonctionnalités principalesui
: Interface utilisateurapi
: APIdb
: Base de donnéesconfig
: Configurationdeps
: Dépendancesadhesion
: Module d'adhésioncotisation
: Module de cotisationpaiement
: Module de paiementpresence
: Module de présenceroles
: Module de gestion des rôlesnotification
: Module de notification
feat(auth): ajouter l'authentification OAuth
fix(ui): corriger l'affichage du calendrier sur mobile
docs(api): mettre à jour la documentation de l'API de paiement
refactor(adhesion): simplifier le processus de renouvellement
test(presence): ajouter des tests pour la validation des listes
Astuce : Utilisez des verbes à l'infinitif en français pour les descriptions.
- Ruby 3.2.5
- Rails 8.0.1
- SQLite3
- Node.js 18+
- Npm 10.9.1
- Redis 6+ (uniquement pour le cache)
- ImageMagick
# Cloner le dépôt
git clone https://github.com/votre-organisation/project-manager-circographe.git
cd project-manager-circographe
# Installer les dépendances
bundle install
yarn install
# Configurer la base de données
cp config/database.yml.example config/database.yml
# Éditer database.yml avec vos informations
# Créer et migrer la base de données
bin/rails db:create db:migrate db:seed
# Lancer le serveur
bin/dev
- VSCode avec les extensions Ruby, Rails, ESLint
- Rubocop pour le linting Ruby
- ESLint pour le linting JavaScript
-
Création de Branche
git checkout develop git pull origin develop git checkout -b feature/ma-fonctionnalite
-
Commits Réguliers
git add . git commit -m "feat(scope): description"
-
Mise à Jour avec Develop
git checkout develop git pull origin develop git checkout feature/ma-fonctionnalite git rebase develop
-
Push et Pull Request
git push origin feature/ma-fonctionnalite # Créer PR via GitHub
Important : Créez des commits atomiques et cohérents. Un commit = une modification logique.
- Pas de conflits avec develop
⚠️ - Approuvé par au moins 2 reviewer 👥
- Le code suit les conventions
- Les tests sont présents et passent
- La documentation est à jour
- Pas de problèmes de sécurité
- Performance acceptable
- Code lisible et maintenable
- Assignez au moins un reviewer à votre PR
- Répondez aux commentaires de manière constructive
- Effectuez les modifications demandées dans de nouveaux commits
- Une fois approuvée, squashez vos commits si nécessaire
- Le reviewer effectuera le merge
## 🏷️ Versioning
Nous suivons [Semantic Versioning](https://semver.org/) pour la gestion des versions.
### Format
`MAJOR.MINOR.PATCH`
- MAJOR : Changements incompatibles avec les versions précédentes
- MINOR : Nouvelles fonctionnalités compatibles avec les versions précédentes
- PATCH : Corrections de bugs compatibles avec les versions précédentes
### Exemple
```bash
git tag -a v1.2.3 -m "Version 1.2.3"
git push origin v1.2.3
-
Prévention
- Pull régulier de develop
- Communication avec l'équipe sur Discord
- Tickets bien définis dans le système de suivi
- Branches de courte durée
-
Résolution
git checkout develop git pull origin develop git checkout ma-branche git rebase develop # Résoudre les conflits git add . git rebase --continue git push origin ma-branche --force-with-lease
Attention : Utilisez
--force-with-lease
au lieu de--force
pour éviter d'écraser le travail des autres.
- Tests unitaires : Tester les modèles et services isolément
- Tests d'intégration : Tester les interactions entre composants
- Tests système : Tester l'application de bout en bout
- Tests de performance : Vérifier les temps de réponse et la charge
# Exécuter tous les tests
bundle exec rspec
# Exécuter un fichier spécifique
bundle exec rspec spec/models/membership_spec.rb
# Exécuter avec la couverture de code
COVERAGE=true bundle exec rspec
Nos tests sont automatiquement exécutés via GitHub Actions à chaque push et pull request.
-
Commits
- Commits atomiques et cohérents
- Messages clairs et descriptifs
- Référencer les tickets (#123)
- Squasher les commits avant merge
-
Branches
- Branches courtes et focalisées
- Nommage explicite
- Supprimer après merge
- Rebaser régulièrement avec develop
-
Code
- Suivre les standards Ruby/Rails
- Documenter le code complexe
- Tests pour nouvelles features
- Optimiser les requêtes N+1
-
Communication
- PR descriptives avec contexte
- Commenter les choix techniques
- Répondre aux reviews rapidement
- Partager les connaissances
Avant de soumettre une PR pour une fonctionnalité critique:
- Vérifier les requêtes N+1 avec Bullet
- Tester avec un jeu de données réaliste
- Optimiser les requêtes SQL complexes
- Vérifier l'utilisation de la mémoire