veza/veza-docs/vision/domains/backend/development-guide.md

9.6 KiB
Raw Blame History

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

🎯 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

  1. Éditer le service : Implémenter la logique métier
  2. Éditer le handler : Ajouter les endpoints HTTP
  3. Éditer le frontend : Créer l'interface utilisateur
  4. Écrire les tests : Valider le comportement
  5. 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

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

  1. 📋 Sélectionner une tâche du backlog
  2. 🛠️ Générer la feature avec les outils
  3. 🧪 Écrire les tests d'abord (TDD)
  4. 💻 Implémenter la fonctionnalité
  5. Exécuter tous les tests
  6. 📝 Mettre à jour la documentation
  7. 🔍 Code review automatique
  8. 🚀 Déploiement automatique
  9. 📊 Monitoring automatique
  10. 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

  1. Configurer l'environnement : ./start-dev-environment.sh setup
  2. Démarrer les services : ./start-dev-environment.sh start
  3. Générer une feature : ./start-dev-environment.sh generate test-feature
  4. Exécuter les tests : ./start-dev-environment.sh test all

Court Terme

  1. Implémenter les features core
  2. Améliorer la couverture de tests
  3. Optimiser les performances
  4. Finaliser la documentation

Moyen Terme

  1. Déploiement en staging
  2. Tests utilisateurs
  3. Optimisations avancées
  4. 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é.