#!/bin/bash # Exit on error # set -e # Disable set -e because we want to continue if one service fails to start immediately or if lsof fails # Get script directory SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) echo "=== Starting Nex Basse Services ===" # --- Backend --- echo "--- Setting up Backend ---" cd "$SCRIPT_DIR/backend" # Check/Activate virtual environment if [ -d "venv" ]; then echo "Activating venv..." source venv/bin/activate elif [ -d ".venv" ]; then echo "Activating .venv..." source .venv/bin/activate else echo "Warning: No virtual environment found (venv or .venv). Using system python." fi # Check backend port (8001) BACKEND_PORT=8001 if lsof -i :$BACKEND_PORT -t >/dev/null ; then echo "Port $BACKEND_PORT is in use. Killing process..." kill -9 $(lsof -i :$BACKEND_PORT -t) || true sleep 1 fi # Start Backend echo "Starting Backend (FastAPI)..." python app/main.py & BACKEND_PID=$! echo "Backend PID: $BACKEND_PID" # --- Frontend --- echo "--- Setting up Frontend ---" cd "$SCRIPT_DIR/frontend" # Check frontend port (5173) FRONTEND_PORT=5173 if lsof -i :$FRONTEND_PORT -t >/dev/null ; then echo "Port $FRONTEND_PORT is in use. Killing process..." kill -9 $(lsof -i :$FRONTEND_PORT -t) || true sleep 1 fi # Start Frontend echo "Starting Frontend (Vite)..." npm run dev & FRONTEND_PID=$! echo "Frontend PID: $FRONTEND_PID" # --- Cleanup --- cleanup() { echo "Stopping services..." kill $BACKEND_PID 2>/dev/null kill $FRONTEND_PID 2>/dev/null exit } trap cleanup SIGINT SIGTERM echo "Both services started." echo "Backend: http://localhost:$BACKEND_PORT" echo "Frontend: http://localhost:$FRONTEND_PORT" echo "Press Ctrl+C to stop." wait $BACKEND_PID $FRONTEND_PID