9.6 KiB
9.6 KiB
| id | title | sidebar_label |
|---|---|---|
| development-guide | 🚀 GUIDE DE DÉVELOPPEMENT - VEZA PLATFORM | 🚀 GUIDE DE DÉVELOPPEMENT - VEZA PLATFORM |
NOTE: Cette page décrit la CIBLE (but visé).
🚀 GUIDE DE DÉVELOPPEMENT - VEZA PLATFORM
📋 Vue d'Ensemble
Ce guide vous accompagne dans le développement de la plateforme Veza avec un environnement parfaitement organisé et des outils automatisés.
🎯 Philosophie de Développement
Principe Fondamental
"Configuration Once, Develop Forever" - Tout est configuré une fois, puis vous développez sans interruption.
Objectifs
- ✅ Focus sur le code : Pas de configuration
- ✅ Qualité automatique : Tests et validation automatiques
- ✅ Déploiement fluide : CI/CD transparent
- ✅ Monitoring intégré : Feedback immédiat
- ✅ Documentation vivante : Toujours à jour
🛠️ Configuration Initiale
1. Setup Complet de l'Environnement
# Exécuter le script de configuration
./start-dev-environment.sh setup
Ce script installe automatiquement :
- Go 1.23, Rust 1.70, Node.js 20
- Docker et Docker Compose
- PostgreSQL et Redis
- Outils de développement (kubectl, helm, terraform)
- Dépendances des projets
2. Vérification de l'Installation
# Vérifier que tout est installé
./start-dev-environment.sh status
🚀 Démarrage Rapide
Démarrer Tous les Services
# Démarrer l'environnement complet
./start-dev-environment.sh start
Vérifier l'État des Services
# Voir l'état de tous les services
./start-dev-environment.sh status
Accéder aux Services
- Frontend : http://localhost:3000
- Backend API : http://localhost:8080
- Chat Server : http://localhost:3001
- Stream Server : http://localhost:8000
🎯 Développement de Features
1. Générer une Nouvelle Feature
# Générer une feature complète
./start-dev-environment.sh generate user-authentication
Cela crée automatiquement :
- Code backend (Go)
- Code frontend (React)
- Tests unitaires et d'intégration
- Documentation
- Configuration
2. Structure d'une Feature
features/feature-20250115-user-authentication/
├── backend/
│ ├── user_authentication_service.go
│ └── user_authentication_handler.go
├── frontend/
│ └── UserAuthenticationPage.tsx
├── tests/
│ ├── user_authentication_test.go
│ └── user_authentication_integration_test.go
├── docs/
│ └── README.md
└── feature-config.yaml
3. Implémentation
- Éditer le service : Implémenter la logique métier
- Éditer le handler : Ajouter les endpoints HTTP
- Éditer le frontend : Créer l'interface utilisateur
- Écrire les tests : Valider le comportement
- Mettre à jour la documentation : Documenter l'usage
🧪 Tests et Qualité
Exécuter Tous les Tests
# Tests complets
./start-dev-environment.sh test all
Types de Tests Disponibles
# Tests unitaires uniquement
./start-dev-environment.sh test unit
# Tests d'intégration uniquement
./start-dev-environment.sh test integration
# Tests de performance
./start-dev-environment.sh test performance
# Tests de sécurité
./start-dev-environment.sh test security
Résultats des Tests
- Rapports HTML :
test-results/test_report.html - Couverture de code :
coverage/ - Logs détaillés :
test-results/
📊 Monitoring et Observabilité
Logs en Temps Réel
# Voir tous les services
./start-dev-environment.sh logs
# Voir un service spécifique
./start-dev-environment.sh logs backend-api
Métriques de Performance
- Prometheus : http://localhost:9090
- Grafana : http://localhost:3001
- Jaeger : http://localhost:16686
Health Checks
# Vérifier la santé des services
curl http://localhost:8080/health
curl http://localhost:3001/health
curl http://localhost:8000/health
🔄 Workflow de Développement
Jour Type d'un Développeur
09:00 - 09:30 : Daily standup + planification
09:30 - 10:00 : Review des tâches assignées
10:00 - 12:00 : Développement feature (TDD)
12:00 - 13:00 : Pause déjeuner
13:00 - 15:00 : Développement feature (TDD)
15:00 - 15:30 : Tests et validation
15:30 - 16:00 : Code review et merge
16:00 - 17:00 : Documentation et cleanup
17:00 - 17:30 : Planification jour suivant
Processus de Développement
- 📋 Sélectionner une tâche du backlog
- 🛠️ Générer la feature avec les outils
- 🧪 Écrire les tests d'abord (TDD)
- 💻 Implémenter la fonctionnalité
- ✅ Exécuter tous les tests
- 📝 Mettre à jour la documentation
- 🔍 Code review automatique
- 🚀 Déploiement automatique
- 📊 Monitoring automatique
- ✅ Validation en staging
<EFBFBD><EFBFBD> Templates de Code
Backend (Go)
// Service template
type {{.ServiceName}}Service struct {
logger *zap.Logger
}
func (s *{{.ServiceName}}Service) Process{{.ServiceName}}(ctx context.Context, input string) (string, error) {
// Implémentation
}
Frontend (React)
// Component template
const {{.ServiceName}}Page: React.FC = () => {
const [data, setData] = useState<{{.ServiceName}}Data[]>([]);
useEffect(() => {
fetch{{.ServiceName}}Data();
}, []);
return (
<div className="p-6">
{/* Interface utilisateur */}
</div>
);
};
Tests (Go)
func Test{{.ServiceName}}Service(t *testing.T) {
service := New{{.ServiceName}}Service()
t.Run("should process {{.ServiceName}} successfully", func(t *testing.T) {
result, err := service.Process{{.ServiceName}}(ctx, "test")
assert.NoError(t, err)
assert.Contains(t, result, "test")
})
}
🔧 Outils de Développement
Générateurs de Code
# Générer une feature complète
./dev-environment/tools/generators/generate-feature.sh "feature-name"
# Générer un service
./dev-environment/tools/generators/generate-service.sh "service-name"
# Générer des tests
./dev-environment/tools/generators/generate-tests.sh "service-name"
Scripts d'Automatisation
# Setup complet
./dev-environment/scripts/setup-dev-environment.sh
# Tests complets
./dev-environment/testing/test-framework.sh all
# Démarrage des services
./start-dev-environment.sh start
Validation et Formatage
# Go
go fmt ./...
go vet ./...
# Rust
cargo fmt
cargo clippy
# Node.js
npm run lint
npm run format
📚 Documentation
Documentation Technique
- Architecture :
docs/architecture/ - APIs :
docs/api/ - Déploiement :
docs/deployment/ - Monitoring :
docs/monitoring/
Documentation de Développement
- Guide de développement :
dev-environment/docs/ - Templates :
dev-environment/templates/ - Outils :
dev-environment/tools/
Documentation Utilisateur
- Guide utilisateur :
veza-docs/docs/ - Fonctionnalités :
veza-docs/docs/features/ - Tutoriels :
veza-docs/docs/guides/
🚨 Dépannage
Problèmes Courants
Service ne démarre pas
# Vérifier les logs
./start-dev-environment.sh logs <service-name>
# Vérifier les ports
netstat -tlnp | grep :<port>
# Redémarrer le service
./start-dev-environment.sh restart
Tests qui échouent
# Vérifier les dépendances
go mod tidy
cargo build
npm install
# Exécuter les tests individuellement
go test ./...
cargo test
npm test
Problèmes de base de données
# Vérifier PostgreSQL
sudo systemctl status postgresql
sudo -u postgres psql -c "SELECT 1;"
# Vérifier Redis
redis-cli ping
Logs et Debugging
# Logs en temps réel
tail -f logs/backend-api.log
tail -f logs/chat-server.log
tail -f logs/stream-server.log
tail -f logs/frontend.log
# Debug mode
export DEBUG=true
./start-dev-environment.sh start
🎯 Bonnes Pratiques
Développement
- ✅ TDD : Tests d'abord, code après
- ✅ Code propre : Lisible et maintenable
- ✅ Documentation : Toujours à jour
- ✅ Commits atomiques : Un changement par commit
- ✅ Messages clairs : Descriptions explicites
Tests
- ✅ Couverture 90%+ : Tests exhaustifs
- ✅ Tests rapides : < 10 minutes total
- ✅ Tests fiables : Pas de flaky tests
- ✅ Tests maintenables : Faciles à modifier
Déploiement
- ✅ CI/CD : Automatisation complète
- ✅ Rollback : Retour en arrière possible
- ✅ Monitoring : Surveillance continue
- ✅ Alertes : Notification des problèmes
🚀 Prochaines Étapes
Immédiat
- Configurer l'environnement :
./start-dev-environment.sh setup - Démarrer les services :
./start-dev-environment.sh start - Générer une feature :
./start-dev-environment.sh generate test-feature - Exécuter les tests :
./start-dev-environment.sh test all
Court Terme
- Implémenter les features core
- Améliorer la couverture de tests
- Optimiser les performances
- Finaliser la documentation
Moyen Terme
- Déploiement en staging
- Tests utilisateurs
- Optimisations avancées
- Préparation production
Cet environnement de développement vous permet de vous concentrer uniquement sur l'implémentation de fonctionnalités, sans vous soucier de la configuration ou de la vision d'ensemble. Tout est automatisé et organisé pour maximiser votre productivité.