#!/bin/bash ################################################################################ # Visual Workflow Builder v4 - Script de Lancement # # Ce script lance : # - Le backend Flask (port 5001) # - Le frontend React v4 avec Vite (port 3002) ################################################################################ set -e # Couleurs GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' CYAN='\033[0;36m' NC='\033[0m' # Répertoires SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BACKEND_DIR="$SCRIPT_DIR/backend" FRONTEND_DIR="$SCRIPT_DIR/frontend_v4" LOG_DIR="$SCRIPT_DIR/logs" # Fichiers PID BACKEND_PID_FILE="$SCRIPT_DIR/.backend.pid" FRONTEND_PID_FILE="$SCRIPT_DIR/.frontend_v4.pid" echo "" echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}" echo -e "${CYAN}║ Visual Workflow Builder v4 - Démarrage ║${NC}" echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}" echo "" # Créer le répertoire de logs si nécessaire mkdir -p "$LOG_DIR" # Fonction de nettoyage cleanup() { echo "" echo -e "${YELLOW}🛑 Arrêt des services...${NC}" if [ -f "$BACKEND_PID_FILE" ]; then BACKEND_PID=$(cat "$BACKEND_PID_FILE") if kill -0 "$BACKEND_PID" 2>/dev/null; then kill "$BACKEND_PID" 2>/dev/null || true echo -e "${GREEN}✓ Backend arrêté (PID: $BACKEND_PID)${NC}" fi rm -f "$BACKEND_PID_FILE" fi if [ -f "$FRONTEND_PID_FILE" ]; then FRONTEND_PID=$(cat "$FRONTEND_PID_FILE") if kill -0 "$FRONTEND_PID" 2>/dev/null; then kill "$FRONTEND_PID" 2>/dev/null || true echo -e "${GREEN}✓ Frontend arrêté (PID: $FRONTEND_PID)${NC}" fi rm -f "$FRONTEND_PID_FILE" fi # Tuer les processus npm/node résiduels sur le port 3002 pkill -f "vite.*3002" 2>/dev/null || true exit 0 } trap cleanup SIGINT SIGTERM # Vérifier les répertoires if [ ! -d "$BACKEND_DIR" ]; then echo -e "${RED}❌ Répertoire backend non trouvé: $BACKEND_DIR${NC}" exit 1 fi if [ ! -d "$FRONTEND_DIR" ]; then echo -e "${RED}❌ Répertoire frontend_v4 non trouvé: $FRONTEND_DIR${NC}" exit 1 fi ################################################################################ # 1. DÉMARRAGE DU BACKEND ################################################################################ echo -e "${BLUE}📦 1. Démarrage du Backend Flask${NC}" echo " Port: 5001" echo "" cd "$BACKEND_DIR" # Utiliser le venv du backend si disponible if [ -d "venv" ]; then source venv/bin/activate echo -e "${GREEN} ✓ Environnement virtuel activé${NC}" fi # Lancer le backend python app.py > "$LOG_DIR/backend_v4.log" 2>&1 & BACKEND_PID=$! echo "$BACKEND_PID" > "$BACKEND_PID_FILE" # Attendre que le backend soit prêt echo -n " Attente du backend" for i in {1..30}; do if curl -s http://localhost:5001/health > /dev/null 2>&1; then echo "" echo -e "${GREEN} ✓ Backend prêt sur http://localhost:5001${NC}" break fi echo -n "." if [ $i -eq 30 ]; then echo "" echo -e "${RED} ❌ Timeout: Le backend n'a pas démarré${NC}" echo " Vérifiez $LOG_DIR/backend_v4.log" tail -20 "$LOG_DIR/backend_v4.log" cleanup exit 1 fi sleep 1 done echo "" ################################################################################ # 2. DÉMARRAGE DU FRONTEND V4 ################################################################################ echo -e "${BLUE}🎨 2. Démarrage du Frontend v4 (Vite + React)${NC}" echo " Port: 3002" echo "" cd "$FRONTEND_DIR" # Installer les dépendances si nécessaire if [ ! -d "node_modules" ]; then echo " Installation des dépendances npm..." npm install echo -e "${GREEN} ✓ Dépendances installées${NC}" fi # Lancer le frontend avec Vite npm run dev > "$LOG_DIR/frontend_v4.log" 2>&1 & FRONTEND_PID=$! echo "$FRONTEND_PID" > "$FRONTEND_PID_FILE" # Attendre que le frontend soit prêt echo -n " Attente du frontend" for i in {1..60}; do if curl -s http://localhost:3002 > /dev/null 2>&1; then echo "" echo -e "${GREEN} ✓ Frontend prêt sur http://localhost:3002${NC}" break fi echo -n "." if [ $i -eq 60 ]; then echo "" echo -e "${RED} ❌ Timeout: Le frontend n'a pas démarré${NC}" echo " Vérifiez $LOG_DIR/frontend_v4.log" tail -20 "$LOG_DIR/frontend_v4.log" cleanup exit 1 fi sleep 1 done echo "" ################################################################################ # 3. INFORMATIONS ################################################################################ echo -e "${CYAN}╔═══════════════════════════════════════════════════════════════╗${NC}" echo -e "${CYAN}║ VWB v4 est prêt ! ║${NC}" echo -e "${CYAN}╚═══════════════════════════════════════════════════════════════╝${NC}" echo "" echo -e "${GREEN}🌐 URLs:${NC}" echo " • Frontend: http://localhost:3002" echo " • Backend: http://localhost:5001" echo " • API v3: http://localhost:5001/api/v3" echo "" echo -e "${GREEN}📝 Logs:${NC}" echo " • Backend: tail -f $LOG_DIR/backend_v4.log" echo " • Frontend: tail -f $LOG_DIR/frontend_v4.log" echo "" echo -e "${GREEN}🔧 Processus:${NC}" echo " • Backend PID: $BACKEND_PID" echo " • Frontend PID: $FRONTEND_PID" echo "" echo -e "${YELLOW}Pour arrêter: Ctrl+C${NC}" echo "" # Ouvrir le navigateur if command -v xdg-open > /dev/null; then sleep 1 xdg-open http://localhost:3002 2>/dev/null & fi # Attendre indéfiniment wait