#!/bin/bash # Script de démarrage rapide pour l'application Veza # Ce script configure et lance tous les services nécessaires set -e PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$PROJECT_ROOT" echo "🚀 Démarrage rapide de l'application Veza" echo "==========================================" echo "" # Créer les répertoires de logs mkdir -p logs # 1. Vérifier JWT_SECRET echo "📝 Vérification de la configuration..." if [ ! -f "veza-backend-api/.env" ] || ! grep -q "JWT_SECRET" "veza-backend-api/.env"; then echo "⚙️ Génération du JWT_SECRET..." JWT_SECRET=$(openssl rand -base64 32) cat > veza-backend-api/.env << EOF # Configuration générée automatiquement JWT_SECRET=${JWT_SECRET} DATABASE_URL=postgres://veza_user:veza_password@localhost:5432/veza_db?sslmode=disable REDIS_URL=redis://localhost:6379/0 PORT=8080 GIN_MODE=release LOG_LEVEL=INFO EOF echo "✅ Configuration créée dans veza-backend-api/.env" else echo "✅ Configuration existante détectée" fi # 2. Démarrer PostgreSQL et Redis avec Docker echo "" echo "🐳 Démarrage de PostgreSQL et Redis..." docker-compose up -d postgres redis # Attendre que les services soient prêts echo "⏳ Attente de PostgreSQL..." timeout 30 bash -c 'until docker-compose exec -T postgres pg_isready -U veza_user; do sleep 1; done' || { echo "❌ PostgreSQL n'a pas démarré à temps" exit 1 } echo "✅ PostgreSQL prêt" echo "⏳ Vérification de Redis..." timeout 30 bash -c 'until docker-compose exec -T redis redis-cli ping | grep -q PONG; do sleep 1; done' || { echo "❌ Redis n'a pas démarré à temps" exit 1 } echo "✅ Redis prêt" # 3. Compiler le backend (si nécessaire) echo "" echo "🔨 Compilation du backend Go..." cd veza-backend-api if [ ! -f "bin/api" ] || [ main.go -nt bin/api ]; then go build -o bin/api main.go echo "✅ Backend compilé avec succès" else echo "✅ Backend déjà compilé (à jour)" fi cd .. # 4. Démarrer le backend en arrière-plan echo "" echo "🚀 Lancement du backend Go API..." cd veza-backend-api ./bin/api > ../logs/backend.log 2>&1 & BACKEND_PID=$! echo "✅ Backend démarré (PID: $BACKEND_PID)" cd .. # Attendre que le backend soit prêt echo "⏳ Attente du backend..." for i in {1..30}; do if curl -s http://localhost:8080/api/v1/health > /dev/null 2>&1; then echo "✅ Backend prêt sur http://localhost:8080" break fi if [ $i -eq 30 ]; then echo "❌ Le backend n'a pas démarré à temps" echo "📋 Logs du backend:" tail -20 logs/backend.log exit 1 fi sleep 1 done # 5. Démarrer le frontend echo "" echo "🎨 Lancement du frontend Vite..." cd apps/web npm run dev > ../../logs/frontend.log 2>&1 & FRONTEND_PID=$! echo "✅ Frontend démarré (PID: $FRONTEND_PID)" cd ../.. # Attendre que le frontend soit prêt echo "⏳ Attente du frontend..." for i in {1..30}; do if curl -s http://localhost:3001 > /dev/null 2>&1; then echo "✅ Frontend prêt sur http://localhost:3001" break fi if [ $i -eq 30 ]; then echo "⚠️ Le frontend n'a pas démarré à temps (mais peut continuer en arrière-plan)" fi sleep 1 done # 6. Afficher le statut echo "" echo "════════════════════════════════════════" echo "✅ Application Veza démarrée avec succès!" echo "════════════════════════════════════════" echo "" echo "📊 Services actifs:" echo " • PostgreSQL : localhost:5432" echo " • Redis : localhost:6379" echo " • Backend API : http://localhost:8080" echo " • Frontend : http://localhost:3001" echo "" echo "📝 Logs disponibles dans:" echo " • Backend : logs/backend.log" echo " • Frontend : logs/frontend.log" echo "" echo "🌐 Accédez à l'application:" echo " 👉 http://localhost:3001" echo "" echo "🛑 Pour arrêter tous les services:" echo " ./scripts/stop-all-services.sh" echo "" echo "📋 Pour voir les logs en temps réel:" echo " tail -f logs/backend.log logs/frontend.log" echo "" # Sauvegarder les PIDs pour pouvoir les arrêter plus tard cat > .service-pids << EOF BACKEND_PID=$BACKEND_PID FRONTEND_PID=$FRONTEND_PID EOF echo "✨ Bon développement!"