149 lines
4.3 KiB
Bash
Executable file
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!"
|
|
|