QuizFrog/start.sh

55 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
echo "=============================="
echo " 错题蛙 QuizFrog 启动脚本"
echo "=============================="
echo ""
ROOT="$(cd "$(dirname "$0")" && pwd)"
# 启动后端
echo "[1/2] 启动后端 (port 8000)..."
cd "$ROOT/backend"
source venv/bin/activate
uvicorn app.main:app --reload --port 8000 --host 0.0.0.0 &
BACKEND_PID=$!
sleep 4
# 启动前端
echo "[2/2] 启动前端 (port 3000)..."
cd "$ROOT/frontend"
npm run dev -- --hostname 0.0.0.0 &
FRONTEND_PID=$!
sleep 5
# 获取局域网IP
if [[ "$OSTYPE" == "darwin"* ]]; then
LAN_IP=$(ipconfig getifaddr en0 2>/dev/null || echo "未检测到")
else
LAN_IP=$(hostname -I 2>/dev/null | awk '{print $1}' || echo "未检测到")
fi
echo ""
echo "=============================="
echo " 启动完成!"
echo ""
echo " 本机访问: http://localhost:3000"
echo " 局域网访问: http://${LAN_IP}:3000"
echo " API文档: http://localhost:8000/docs"
echo "=============================="
echo ""
# 自动打开浏览器
if [[ "$OSTYPE" == "darwin"* ]]; then
open http://localhost:3000
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
xdg-open http://localhost:3000 2>/dev/null
fi
echo "按 Ctrl+C 停止所有服务"
# 等待任一进程退出
trap "kill $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit" INT TERM
wait