# Guide de Contribution - 4NK Node Merci de votre intérêt pour contribuer au projet 4NK Node ! Ce guide vous aidera à comprendre comment participer au développement de cette infrastructure pour les paiements silencieux Bitcoin. ## 📋 Table des Matières - [🎯 Comment Contribuer](#-comment-contribuer) - [🚀 Premiers Pas](#-premiers-pas) - [🔧 Environnement de Développement](#️-environnement-de-développement) - [📝 Processus de Contribution](#-processus-de-contribution) - [🧪 Tests](#-tests) - [📚 Documentation](#-documentation) - [🐛 Signaler un Bug](#-signaler-un-bug) - [💡 Proposer une Fonctionnalité](#-proposer-une-fonctionnalité) - [🔍 Code Review](#-code-review) - [📦 Release](#-release) ## 🎯 Comment Contribuer ### Types de Contributions Nous accueillons différents types de contributions : - **🐛 Bug fixes** - Correction de bugs et problèmes - **✨ Nouvelles fonctionnalités** - Ajout de nouvelles capacités - **📚 Documentation** - Amélioration de la documentation - **🧪 Tests** - Ajout ou amélioration des tests - **🔧 Outils** - Amélioration des scripts et outils - **🌐 Traductions** - Traduction de la documentation - **📊 Performance** - Optimisations de performance - **🔒 Sécurité** - Améliorations de sécurité ### Niveaux de Contribution - **Débutant** - Documentation, tests, petits bugs - **Intermédiaire** - Nouvelles fonctionnalités, améliorations - **Avancé** - Architecture, optimisations majeures ## 🚀 Premiers Pas ### Prérequis - **Docker** et **Docker Compose** installés - **Git** configuré - **Python 3.8+** (pour les tests) - **Rust** (pour le développement sdk_relay) - **Connexion Internet** stable ### Fork et Clone ```bash # 1. Fork le repository sur Gitea # 2. Clone votre fork git clone https://git.4nkweb.com/votre-username/4NK_node.git cd 4NK_node # 3. Ajouter le repository original comme upstream git remote add upstream https://git.4nkweb.com/4nk/4NK_node.git ``` ### Branches ```bash # Créer une branche pour votre contribution git checkout -b feature/nom-de-votre-feature # ou git checkout -b fix/nom-du-bug ``` ## 🔧 Environnement de Développement ### Installation Locale ```bash # 1. Cloner le repository git clone https://git.4nkweb.com/4nk/4NK_node.git cd 4NK_node # 2. Démarrer l'infrastructure ./restart_4nk_node.sh # 3. Vérifier que tout fonctionne docker ps ``` ### Configuration de Développement ```bash # Variables d'environnement pour le développement export RUST_LOG=debug export ENABLE_SYNC_TEST=1 export BITCOIN_NETWORK=signet ``` ### Outils de Développement ```bash # Tests ./tests/run_all_tests.sh # Linting (si configuré) cargo clippy rustfmt src/ # Build docker-compose build ``` ## 📝 Processus de Contribution ### 1. Planifier Votre Contribution - [ ] Vérifier les issues existantes - [ ] Créer une issue si nécessaire - [ ] Discuter de l'approche avec l'équipe - [ ] Planifier les tests et la documentation ### 2. Développer - [ ] Créer une branche depuis `main` - [ ] Développer votre fonctionnalité - [ ] Ajouter des tests - [ ] Mettre à jour la documentation - [ ] Vérifier que les tests passent ### 3. Soumettre - [ ] Commiter avec des messages clairs - [ ] Pousser vers votre fork - [ ] Créer une Pull Request - [ ] Remplir le template de PR ### Messages de Commit Utilisez le format conventionnel : ```bash # Format type(scope): description # Exemples feat(sdk_relay): add new sync type for metrics fix(bitcoin): resolve connection timeout issue docs(api): update WebSocket message format test(integration): add multi-relay sync tests ``` **Types :** - `feat` - Nouvelle fonctionnalité - `fix` - Correction de bug - `docs` - Documentation - `style` - Formatage - `refactor` - Refactoring - `test` - Tests - `chore` - Maintenance ## 🧪 Tests ### Exécuter les Tests ```bash # Tous les tests ./tests/run_all_tests.sh # Tests par catégorie ./tests/run_unit_tests.sh ./tests/run_integration_tests.sh ./tests/run_connectivity_tests.sh ./tests/run_external_tests.sh # Tests avec debug ./tests/run_all_tests.sh --debug ``` ### Ajouter des Tests ```bash # Structure recommandée tests/ ├── unit/ # Tests unitaires ├── integration/ # Tests d'intégration ├── connectivity/ # Tests de connectivité ├── external/ # Tests externes └── performance/ # Tests de performance ``` ### Bonnes Pratiques - Testez tous les cas d'usage - Incluez des tests d'erreur - Maintenez une couverture > 80% - Utilisez des données de test réalistes ## 📚 Documentation ### Mise à Jour de la Documentation ```bash # Structure de la documentation docs/ ├── INSTALLATION.md # Guide d'installation ├── USAGE.md # Guide d'utilisation ├── CONFIGURATION.md # Guide de configuration ├── ARCHITECTURE.md # Architecture technique ├── API.md # Référence API ├── TESTING.md # Guide des tests └── INDEX.md # Index principal ``` ### Standards de Documentation - Utilisez le Markdown - Incluez des exemples de code - Ajoutez des diagrammes si nécessaire - Maintenez la cohérence du style - Traduisez en anglais si possible ## 🐛 Signaler un Bug ### Template de Bug Report ```markdown ## Description du Bug Description claire et concise du problème. ## Étapes pour Reproduire 1. Aller à '...' 2. Cliquer sur '...' 3. Faire défiler jusqu'à '...' 4. Voir l'erreur ## Comportement Attendu Description de ce qui devrait se passer. ## Comportement Actuel Description de ce qui se passe actuellement. ## Informations Système - OS: [ex: Ubuntu 20.04] - Docker: [ex: 20.10.0] - Version: [ex: v1.0.0] ## Logs ``` Logs pertinents ici ``` ## Capture d'Écran Si applicable, ajoutez une capture d'écran. ## Contexte Supplémentaire Toute autre information pertinente. ``` ## 💡 Proposer une Fonctionnalité ### Template de Feature Request ```markdown ## Résumé Description claire et concise de la fonctionnalité souhaitée. ## Motivation Pourquoi cette fonctionnalité est-elle nécessaire ? ## Proposition Description détaillée de la fonctionnalité proposée. ## Alternatives Considérées Autres solutions envisagées. ## Impact Impact sur les utilisateurs et l'architecture. ## Exemples d'Utilisation Comment cette fonctionnalité serait-elle utilisée ? ``` ## 🔍 Code Review ### Processus de Review 1. **Automatique** - Tests et linting 2. **Review par l'équipe** - Code review manuel 3. **Tests d'intégration** - Validation complète 4. **Approbation** - Merge dans main ### Critères de Review - [ ] Code fonctionnel et testé - [ ] Tests ajoutés/modifiés - [ ] Documentation mise à jour - [ ] Pas de régression - [ ] Performance acceptable - [ ] Sécurité vérifiée ### Répondre aux Reviews - Répondez poliment aux commentaires - Apportez les modifications demandées - Demandez des clarifications si nécessaire - Re-merguez après les corrections ## 📦 Release ### Processus de Release 1. **Préparation** - Finaliser les fonctionnalités 2. **Tests** - Tests complets 3. **Documentation** - Mise à jour des docs 4. **Tag** - Créer un tag de version 5. **Release** - Publier sur GitHub/GitLab 6. **Annonce** - Communiquer la release ### Numérotation des Versions Utilisez le [Semantic Versioning](https://semver.org/) : - **MAJOR** - Changements incompatibles - **MINOR** - Nouvelles fonctionnalités compatibles - **PATCH** - Corrections de bugs compatibles ## 🤝 Communauté ### Communication - **Issues** - Pour les bugs et fonctionnalités - **Discussions** - Pour les questions générales (via les issues) - **Pull Requests** - Pour les contributions - **Wiki** - Pour la documentation collaborative (si activé sur Gitea) ### Code de Conduite - Soyez respectueux et inclusif - Écoutez les autres points de vue - Contribuez de manière constructive - Respectez les standards du projet ### Reconnaissance - Les contributeurs sont listés dans le README - Les contributions significatives sont reconnues - Les releases mentionnent les contributeurs ## 🆘 Besoin d'Aide ? - Consultez la [documentation](docs/) - Vérifiez les [issues existantes](https://git.4nkweb.com/4nk/4NK_node/issues) - Posez une question via les [issues](https://git.4nkweb.com/4nk/4NK_node/issues/new) - Contactez l'équipe de maintenance ## 📄 Licence En contribuant, vous acceptez que vos contributions soient sous la même licence que le projet (MIT). --- Merci de contribuer à 4NK Node ! 🚀