veza/scripts/archive/quick-start.sh
2025-12-12 21:34:34 -05:00

149 lines
4.3 KiB
Bash
Executable file

#!/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!"