ihm_client/CONTRIBUTING.md
NicolasCantu bf680ab6dd ci: docker_tag=pbkdf2-credentials
🔐 Implémentation PBKDF2 avec credentials navigateur

 Fonctionnalités ajoutées:
- SecureCredentialsService avec PBKDF2 (100k itérations)
- Chiffrement AES-GCM des clés spend/scan
- Interface utilisateur complète pour gestion credentials
- Tests unitaires complets
- Architecture modulaire avec EventBus
- Gestion mémoire optimisée
- Performance monitoring
- Web Workers pour encodage asynchrone

🛡️ Sécurité:
- Dérivation PBKDF2 avec salt unique
- Chiffrement AES-GCM des clés sensibles
- Validation force mot de passe
- Stockage sécurisé IndexedDB + WebAuthn
- Logging sécurisé sans exposition données

🔧 Corrections:
- Erreur 500 résolue (clé dupliquée package.json)
- Configuration Vite simplifiée
- Dépendances manquantes corrigées

📊 Améliorations:
- Architecture découplée avec repositories
- Services spécialisés (PairingService, etc.)
- Monitoring performance et mémoire
- Tests avec couverture complète
- Documentation technique détaillée
2025-10-23 12:51:49 +02:00

3.6 KiB

🤝 Guide de contribution - 4NK Client

📋 Standards de code

TypeScript

  • Utiliser des types explicites
  • Éviter any autant que possible
  • Préférer les interfaces aux types
  • Documenter les fonctions publiques avec JSDoc

Architecture

  • Séparation claire des responsabilités
  • Services injectables (éviter les singletons)
  • Composants réutilisables
  • Gestion d'erreurs centralisée

Performance

  • Lazy loading des modules lourds
  • Mémoisation des calculs coûteux
  • Debouncing des événements fréquents
  • Optimisation des re-renders

🛠️ Workflow de développement

1. Avant de commencer

# Installer les dépendances
npm install

# Vérifier la qualité du code
npm run quality

# Lancer les tests
npm test

2. Pendant le développement

# Vérifier les types
npm run type-check

# Linter le code
npm run lint

# Formater le code
npm run prettify

3. Avant de commiter

# Vérification complète
npm run quality:fix

# Tests
npm test

# Build
npm run build

📝 Standards de commit

Format

type(scope): description

[body optionnel]

[footer optionnel]

Types

  • feat: Nouvelle fonctionnalité
  • fix: Correction de bug
  • docs: Documentation
  • style: Formatage, point-virgules, etc.
  • refactor: Refactoring
  • test: Ajout de tests
  • chore: Tâches de maintenance

Exemples

feat(pairing): add 4-words pairing support
fix(ui): resolve header display issue
docs(api): update pairing service documentation

🧪 Tests

Structure des tests

src/
├── components/
│   └── __tests__/
├── services/
│   └── __tests__/
└── utils/
    └── __tests__/

Conventions

  • Un fichier de test par fichier source
  • Nommage: *.test.ts ou *.spec.ts
  • Couverture minimale: 80%
  • Tests unitaires et d'intégration

📊 Métriques de qualité

Objectifs

  • Complexité cyclomatique: < 10
  • Taille des fichiers: < 300 lignes
  • Couverture de tests: > 80%
  • Temps de build: < 30 secondes

Outils

  • ESLint pour la qualité du code
  • Prettier pour le formatage
  • TypeScript pour la sécurité des types
  • Bundle analyzer pour la taille

🔒 Sécurité

Bonnes pratiques

  • Validation des données d'entrée
  • Sanitisation des messages
  • Gestion sécurisée des tokens
  • Logs sans données sensibles

Vérifications

  • Aucun eval() ou Function()
  • Validation des URLs et chemins
  • Gestion des erreurs sans exposition d'informations

📚 Documentation

Code

  • JSDoc pour toutes les fonctions publiques
  • Commentaires pour la logique complexe
  • README technique pour l'architecture

API

  • Documentation des endpoints
  • Exemples d'utilisation
  • Gestion des erreurs

🚀 Déploiement

Environnements

  • Development: npm run start
  • Production: npm run build && npm run deploy

Vérifications pré-déploiement

npm run quality
npm test
npm run build
npm run analyze

🐛 Signalement de bugs

Template

**Description**
Description claire du problème

**Reproduction**
1. Étapes pour reproduire
2. Comportement attendu
3. Comportement actuel

**Environnement**
- OS:
- Navigateur:
- Version:

**Logs**
Logs pertinents (sans données sensibles)

💡 Suggestions d'amélioration

Processus

  1. Créer une issue détaillée
  2. Discuter de la faisabilité
  3. Implémenter avec tests
  4. Documentation mise à jour

Critères

  • Amélioration de la performance
  • Meilleure expérience utilisateur
  • Réduction de la complexité
  • Sécurité renforcée