#!/usr/bin/env bash
set -euo pipefail

ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
FRONTEND_DIR="$ROOT_DIR/frontend"
PORT="${CLINIC_DEV_PORT:-5173}"
PIDFILE="$ROOT_DIR/backend/storage/app/vite-dev.pid"
LOG_FILE="$ROOT_DIR/backend/storage/logs/vite-dev.log"

cd "$FRONTEND_DIR"

command -v npm >/dev/null 2>&1 || { echo "Node.js and npm are required."; exit 1; }
[[ -f package.json ]] || { echo "Missing frontend/package.json"; exit 1; }

mkdir -p "$ROOT_DIR/backend/storage/logs" "$ROOT_DIR/backend/storage/app"

if [[ -f "$PIDFILE" ]]; then
  old_pid="$(cat "$PIDFILE" 2>/dev/null || true)"
  if [[ -n "$old_pid" ]] && kill -0 "$old_pid" 2>/dev/null; then
    echo "Vite dev server already running (PID $old_pid) at http://localhost:${PORT}"
    exit 0
  fi
fi

if command -v curl >/dev/null 2>&1 && curl -sf "http://127.0.0.1:${PORT}/" >/dev/null 2>&1; then
  echo "Dev server already responding at http://localhost:${PORT}"
  exit 0
fi

echo "Starting frontend dev server: npm run dev"
nohup npm run dev >>"$LOG_FILE" 2>&1 &
echo $! >"$PIDFILE"

sleep 3

if kill -0 "$(cat "$PIDFILE")" 2>/dev/null; then
  echo "Dev server started (PID $(cat "$PIDFILE")) at http://localhost:${PORT}"
  echo "Log: $LOG_FILE"
  exit 0
fi

echo "Failed to start dev server. See $LOG_FILE"
exit 1
