Initial commit
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BACKEND_HOST="${BACKEND_HOST:-127.0.0.1}"
|
||||
BACKEND_PORT="${BACKEND_PORT:-8000}"
|
||||
FRONTEND_HOST="${FRONTEND_HOST:-127.0.0.1}"
|
||||
FRONTEND_PORT="${FRONTEND_PORT:-5173}"
|
||||
PYTHON_BIN="${PYTHON_BIN:-python3}"
|
||||
|
||||
cleanup() {
|
||||
local pids
|
||||
pids="$(jobs -pr || true)"
|
||||
if [[ -n "${pids}" ]]; then
|
||||
kill ${pids} 2>/dev/null || true
|
||||
fi
|
||||
}
|
||||
|
||||
trap cleanup INT TERM EXIT
|
||||
|
||||
if [[ ! -f "${ROOT_DIR}/backend/app/main.py" ]]; then
|
||||
echo "Backend entrypoint not found: backend/app/main.py"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "${ROOT_DIR}/frontend/package.json" ]]; then
|
||||
echo "Frontend package manifest not found: frontend/package.json"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
command -v "${PYTHON_BIN}" >/dev/null 2>&1 || {
|
||||
echo "Python executable not found: ${PYTHON_BIN}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
command -v npm >/dev/null 2>&1 || {
|
||||
echo "npm is required to start the frontend"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "Starting backend on ${BACKEND_HOST}:${BACKEND_PORT}"
|
||||
(
|
||||
cd "${ROOT_DIR}/backend"
|
||||
"${PYTHON_BIN}" -m uvicorn app.main:app \
|
||||
--host "${BACKEND_HOST}" \
|
||||
--port "${BACKEND_PORT}" \
|
||||
--reload
|
||||
) &
|
||||
|
||||
echo "Starting frontend on ${FRONTEND_HOST}:${FRONTEND_PORT}"
|
||||
(
|
||||
cd "${ROOT_DIR}/frontend"
|
||||
npm run dev -- \
|
||||
-H "${FRONTEND_HOST}" \
|
||||
-p "${FRONTEND_PORT}"
|
||||
) &
|
||||
|
||||
echo "Frontend: http://${FRONTEND_HOST}:${FRONTEND_PORT}"
|
||||
echo "Backend: http://${BACKEND_HOST}:${BACKEND_PORT}"
|
||||
echo "Press Ctrl+C to stop both services."
|
||||
|
||||
wait
|
||||
Reference in New Issue
Block a user