#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")" && pwd)" BACKEND_DIR="$ROOT_DIR/backend" FRONTEND_DIR="$ROOT_DIR/frontend" echo "=== Starting CalCount dev servers ===" # Kill background processes on exit cleanup() { echo "" echo "Shutting down..." kill "$BACKEND_PID" "$FRONTEND_PID" 2>/dev/null || true wait "$BACKEND_PID" "$FRONTEND_PID" 2>/dev/null || true echo "Done." } trap cleanup EXIT SIGINT SIGTERM # Start backend (FastAPI via uvicorn) echo "[backend] uvicorn main:app --reload --host 0.0.0.0" cd "$BACKEND_DIR" uv run uvicorn main:app --reload --host 0.0.0.0 & BACKEND_PID=$! # Start frontend (Vite dev server with --host) echo "[frontend] vite --host" cd "$FRONTEND_DIR" npm run dev:host & FRONTEND_PID=$! echo "" echo " Backend: http://localhost:8000" echo " Frontend: http://localhost:5173" echo " Press Ctrl+C to stop both." echo "" # Wait for either process to exit wait