4NK_env/CONTRIBUTING.md

277 lines
6.5 KiB
Markdown

# Contribuer à 4NK Environment
Merci de votre intérêt pour contribuer au projet 4NK Environment ! Ce document fournit des directives pour contribuer efficacement à l'écosystème 4NK.
## 📋 Table des matières
- [Code de conduite](#code-de-conduite)
- [Comment contribuer](#comment-contribuer)
- [Processus de développement](#processus-de-développement)
- [Standards de code](#standards-de-code)
- [Tests](#tests)
- [Documentation](#documentation)
- [Déploiement](#déploiement)
- [Questions et support](#questions-et-support)
## 🤝 Code de conduite
Ce projet adhère à notre [Code de Conduite](CODE_OF_CONDUCT.md). En participant, vous acceptez de respecter ces règles.
## 🚀 Comment contribuer
### Types de contributions
- **🐛 Corrections de bugs** : Signaler et corriger des problèmes
- **✨ Nouvelles fonctionnalités** : Ajouter des capacités
- **📚 Documentation** : Améliorer la documentation
- **🧪 Tests** : Ajouter ou améliorer les tests
- **🔧 Maintenance** : Refactoring, optimisation, nettoyage
### Processus de contribution
1. **Créer une issue** pour discuter des changements majeurs
2. **Fork le repository** si nécessaire
3. **Créer une branche** de fonctionnalité
4. **Développer** avec les standards de code
5. **Tester** vos modifications
6. **Documenter** les changements
7. **Soumettre** une Pull Request
## 🛠️ Processus de développement
### Structure du projet
```
4NK_env/
├── 4NK_modules/ # Modules 4NK (SDKs, services)
├── projects/ # Projets applicatifs (LeCoffre)
├── docs/ # Documentation technique
├── IA_agents/ # Agents IA et prompts
├── scripts/ # Scripts de déploiement
└── confs/ # Configurations centralisées
```
### Branches
- **`main`** : Branche principale stable
- **`ext`** : Branche de développement étendue
- **`feature/*`** : Nouvelles fonctionnalités
- **`fix/*`** : Corrections de bugs
- **`docs/*`** : Améliorations documentation
### Workflow Git
```bash
# 1. Créer une branche de fonctionnalité
git checkout -b feature/nouvelle-fonctionnalite
# 2. Développer et tester
# ... modifications ...
# 3. Commiter avec un message descriptif
git add .
git commit -m "feat: ajouter nouvelle fonctionnalité X"
# 4. Pousser la branche
git push origin feature/nouvelle-fonctionnalite
# 5. Créer une Pull Request (si applicable)
```
## 📝 Standards de code
### Messages de commit
Utilisez le format conventionnel :
```
type(scope): description
[corps optionnel]
[footer optionnel]
```
**Types** :
- `feat` : Nouvelle fonctionnalité
- `fix` : Correction de bug
- `docs` : Documentation
- `style` : Formatage, point-virgules manquants, etc.
- `refactor` : Refactoring de code
- `test` : Ajout de tests
- `chore` : Maintenance, dépendances
**Exemples** :
```
feat(sdk_relay): ajouter support WebSocket sécurisé
fix(lecoffre): corriger authentification OAuth2
docs(architecture): mettre à jour diagrammes de flux
```
### Standards par technologie
#### Rust (modules 4NK)
```bash
# Formatage
cargo fmt
# Linting
cargo clippy
# Tests
cargo test
# Documentation
cargo doc --open
```
#### TypeScript/JavaScript (frontend)
```bash
# Formatage
npm run format
# Linting
npm run lint
# Tests
npm test
# Build
npm run build
```
#### Docker
- Utiliser des images officielles
- Multi-stage builds pour optimiser la taille
- Utilisateurs non-root
- Healthchecks appropriés
## 🧪 Tests
### Tests obligatoires
- **Tests unitaires** : Fonctionnalités individuelles
- **Tests d'intégration** : Interactions entre composants
- **Tests de déploiement** : Validation des scripts
- **Tests de sécurité** : Vérification des bonnes pratiques
### Exécution des tests
```bash
# Tests globaux
./scripts/test-all.sh
# Tests par module
cd 4NK_modules/sdk_relay && cargo test
cd projects/lecoffre/lecoffre-front && npm test
# Tests de déploiement
./scripts/validate-deployment.sh
```
## 📚 Documentation
### Types de documentation
- **README.md** : Vue d'ensemble du projet
- **docs/** : Documentation technique détaillée
- **IA_agents/** : Prompts et guides pour agents IA
- **Commentaires de code** : Documentation inline
### Standards de documentation
- **Markdown** pour tous les documents
- **Diagrammes** avec Mermaid ou PlantUML
- **Exemples de code** fonctionnels
- **Liens** vers les ressources externes
### Mise à jour de la documentation
```bash
# Vérifier la cohérence
./scripts/validate-docs.sh
# Générer la documentation
./scripts/generate-docs.sh
```
## 🚀 Déploiement
### Environnements
- **Développement** : Tests et développement local
- **Staging** : Validation avant production
- **Production** : Environnement de production
### Processus de déploiement
1. **Tests** : Validation complète
2. **Build** : Construction des artefacts
3. **Déploiement** : Mise en production
4. **Validation** : Vérification post-déploiement
5. **Monitoring** : Surveillance continue
### Scripts de déploiement
```bash
# Déploiement complet
./scripts/deploy-all.sh
# Déploiement par phase
./scripts/deploy-phase-base.sh
./scripts/deploy-phase-blockchain.sh
./scripts/deploy-phase-application.sh
```
## 🔒 Sécurité
### Bonnes pratiques
- **Aucun secret** dans le code source
- **Variables d'environnement** pour la configuration
- **Utilisateurs non-root** dans les conteneurs
- **Clés SSH** pour l'authentification Git
- **Chiffrement** des données sensibles
### Signalement de vulnérabilités
Pour signaler une vulnérabilité de sécurité :
1. **Ne pas** créer d'issue publique
2. **Contacter** directement l'équipe de sécurité
3. **Attendre** la confirmation avant divulgation
## 📞 Questions et support
### Canaux de communication
- **Issues GitHub** : Bugs et demandes de fonctionnalités
- **Discussions** : Questions générales
- **Documentation** : Guides et références
### Obtenir de l'aide
1. **Consulter** la documentation existante
2. **Rechercher** dans les issues existantes
3. **Créer** une nouvelle issue si nécessaire
4. **Fournir** le contexte et les détails
## 🏷️ Versioning
Le projet utilise le [Semantic Versioning](https://semver.org/) :
- **MAJOR** : Changements incompatibles
- **MINOR** : Nouvelles fonctionnalités compatibles
- **PATCH** : Corrections de bugs
## 📄 Licence
Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails.
## 🙏 Remerciements
Merci à tous les contributeurs qui rendent ce projet possible !
---
**Dernière mise à jour** : 2024-09-25
**Version** : 1.0.0