#!/usr/bin/env bash # Lance le backend (FastAPI) et le frontend (Next.js) pour tester l'application. # Usage: ./scripts/run-dev.sh # Arrêt: Ctrl+C set -e ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" BACKEND_PID="" FRONTEND_PID="" cleanup() { echo "" echo "Arrêt en cours..." [ -n "$BACKEND_PID" ] && kill "$BACKEND_PID" 2>/dev/null || true [ -n "$FRONTEND_PID" ] && kill "$FRONTEND_PID" 2>/dev/null || true exit 0 } trap cleanup SIGINT SIGTERM # Libère les ports 8000 et 3000 si déjà utilisés (ex: ancienne session) kill_port() { local port=$1 local pids pids=$(lsof -ti ":$port" 2>/dev/null) || true if [ -n "$pids" ]; then echo "Libération du port $port (PID: $pids)..." echo "$pids" | xargs kill -9 2>/dev/null || true sleep 1 fi } kill_port 8000 kill_port 3000 # Dossiers nécessaires mkdir -p uploads outputs temp # .env depuis .env.example si absent if [ ! -f .env ]; then echo "Création de .env à partir de .env.example" cp .env.example .env fi echo "==============================================" echo " Office Translator - Backend + Frontend" echo "==============================================" echo "" # Backend avec le venv du projet if [ -d ".venv" ]; then source .venv/bin/activate elif [ -d "venv" ]; then source venv/bin/activate fi echo "Démarrage du backend (FastAPI) sur http://localhost:8000 ..." python main.py & BACKEND_PID=$! # Laisser le backend démarrer sleep 2 echo "Démarrage du frontend (Next.js) sur http://localhost:3000 ..." if [ ! -d "frontend/node_modules" ]; then echo "Installation des dépendances frontend (npm install)..." (cd frontend && npm install) fi (cd frontend && npx next dev --webpack) & FRONTEND_PID=$! echo "" echo "==============================================" echo " Application prête" echo "==============================================" echo " Frontend: http://localhost:3000" echo " Backend: http://localhost:8000" echo " API Docs: http://localhost:8000/docs" echo " Santé: http://localhost:8000/health" echo "==============================================" echo " Arrêter: Ctrl+C" echo "" wait