🔐 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
3.6 KiB
3.6 KiB
🤝 Guide de contribution - 4NK Client
📋 Standards de code
TypeScript
- Utiliser des types explicites
- Éviter
anyautant 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 bugdocs: Documentationstyle: Formatage, point-virgules, etc.refactor: Refactoringtest: Ajout de testschore: 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.tsou*.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()ouFunction() - 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
- Créer une issue détaillée
- Discuter de la faisabilité
- Implémenter avec tests
- Documentation mise à jour
Critères
- Amélioration de la performance
- Meilleure expérience utilisateur
- Réduction de la complexité
- Sécurité renforcée