#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" DATA_DIR="${DATA_DIR:-${ROOT_DIR}/data}" STORAGE_DIR="${STORAGE_DIR:-${DATA_DIR}/storage}" DB_PATH="${DATA_DIR}/presenter_coach.db" WEB_PORT="${PORT:-7860}" mkdir -p "${STORAGE_DIR}" export DATABASE_URL="${DATABASE_URL:-sqlite:///${DB_PATH}}" export STORAGE_DIR="${STORAGE_DIR}" export LOCAL_ONLY_MODE="${LOCAL_ONLY_MODE:-true}" export COOKIE_PATH="${COOKIE_PATH:-/}" export COACHING_PROVIDER="${COACHING_PROVIDER:-auto}" export COACHING_FALLBACK_BUILTIN="${COACHING_FALLBACK_BUILTIN:-true}" export USE_LOCAL_WORKER_FALLBACK="${USE_LOCAL_WORKER_FALLBACK:-true}" export INTERNAL_API_URL="http://127.0.0.1:8000" export ALLOW_FRAME_EMBEDDING="${ALLOW_FRAME_EMBEDDING:-true}" echo "Starting Speech-Machine ยท Tech Presenter Coach (Cloud Container)" echo " Public Web Port: ${WEB_PORT}" echo " Internal API: ${INTERNAL_API_URL}" PYTHONPATH="${ROOT_DIR}/apps/api/src" python3 -m uvicorn app.main:app --host 127.0.0.1 --port 8000 & API_PID=$! cleanup() { kill "${API_PID}" 2>/dev/null || true } trap cleanup EXIT INT TERM cd "${ROOT_DIR}/apps/web" exec npx next start --hostname 0.0.0.0 --port "${WEB_PORT}"