50 lines
1.2 KiB
Bash
50 lines
1.2 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
set -euo pipefail
|
|||
|
|
|
|||
|
|
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
|||
|
|
|
|||
|
|
# Helpful banner
|
|||
|
|
echo "10AM – dev runner"
|
|||
|
|
echo "Frontend will be on http://localhost:5173"
|
|||
|
|
echo "Backend API on http://127.0.0.1:8000"
|
|||
|
|
echo
|
|||
|
|
|
|||
|
|
# Ensure deps
|
|||
|
|
command -v python3 >/dev/null || { echo "python3 not found"; exit 1; }
|
|||
|
|
command -v npm >/dev/null || { echo "npm not found"; exit 1; }
|
|||
|
|
|
|||
|
|
# Start backend (serves /ten-am and /state). It will also start the collector (see patch below).
|
|||
|
|
(
|
|||
|
|
cd "$ROOT/server"
|
|||
|
|
python -m venv .venv
|
|||
|
|
source .venv/bin/activate
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
export TENAM_DATA="$ROOT/server/capitals_tz.json"
|
|||
|
|
python3 tenam_full_server.py --host 127.0.0.1 --port 8000
|
|||
|
|
) &
|
|||
|
|
BACKEND_PID=$!
|
|||
|
|
|
|||
|
|
# Start frontend (Vite dev) with proxy to backend (already configured in vite.config.ts)
|
|||
|
|
(
|
|||
|
|
cd "$ROOT/frontend"
|
|||
|
|
if [ ! -d node_modules ]; then
|
|||
|
|
echo "Installing frontend deps…"
|
|||
|
|
npm install
|
|||
|
|
fi
|
|||
|
|
npm run dev -- --host --port 5173
|
|||
|
|
) &
|
|||
|
|
FRONTEND_PID=$!
|
|||
|
|
|
|||
|
|
# Cleanup on exit
|
|||
|
|
cleanup() {
|
|||
|
|
echo
|
|||
|
|
echo "Shutting down…"
|
|||
|
|
kill "$BACKEND_PID" "$FRONTEND_PID" 2>/dev/null || true
|
|||
|
|
wait 2>/dev/null || true
|
|||
|
|
}
|
|||
|
|
trap cleanup INT TERM
|
|||
|
|
|
|||
|
|
# Info
|
|||
|
|
echo "Open: http://localhost:5173"
|
|||
|
|
echo "Press Ctrl+C to stop."
|
|||
|
|
wait
|