Spaces:
Sleeping
Sleeping
| # Start both backend and frontend dev servers | |
| set -e | |
| DIR="$(cd "$(dirname "$0")" && pwd)" | |
| ROOT="$(cd "$DIR/.." && pwd)" | |
| VENV="$ROOT/.venv" | |
| echo "Starting gMAS Web UI..." | |
| echo "" | |
| # Use the project root .venv (has torch, rustworkx, uvicorn, etc.) | |
| if [ ! -f "$VENV/bin/python" ]; then | |
| echo "Error: project .venv not found at $VENV" >&2 | |
| echo "Run 'uv sync' in the project root first." >&2 | |
| exit 1 | |
| fi | |
| # Ensure frontend deps are installed | |
| if [ ! -d "$DIR/frontend/node_modules" ]; then | |
| echo "[Frontend] Installing dependencies..." | |
| (cd "$DIR/frontend" && npm ci) | |
| fi | |
| # Start backend | |
| echo "[Backend] Starting FastAPI on http://localhost:8000" | |
| cd "$DIR" | |
| PYTHONPATH="$DIR" "$VENV/bin/uvicorn" backend.main:app --host 0.0.0.0 --port 8000 --reload & | |
| BACKEND_PID=$! | |
| # Start frontend | |
| echo "[Frontend] Starting Vite on http://localhost:5173" | |
| cd "$DIR/frontend" | |
| npx vite --host & | |
| FRONTEND_PID=$! | |
| echo "" | |
| echo "gMAS Web UI is running!" | |
| echo " Frontend: http://localhost:5173" | |
| echo " Backend: http://localhost:8000" | |
| echo " API Docs: http://localhost:8000/docs" | |
| echo "" | |
| echo "Press Ctrl+C to stop both servers." | |
| trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null" EXIT | |
| wait | |