kindergarten_java/reading-platform/start.sh

112 lines
2.6 KiB
Bash
Raw Normal View History

2026-02-28 16:41:39 +08:00
#!/bin/bash
# 幼儿阅读教学服务平台 - 启动脚本
echo "🚀 启动幼儿阅读教学服务平台..."
echo ""
# 检查项目目录
BACKEND_DIR="/Users/retirado/ccProgram/reading-platform-backend"
FRONTEND_DIR="/Users/retirado/ccProgram/reading-platform-frontend"
# 检查Node.js
if ! command -v node &> /dev/null; then
echo "❌ Node.js 未安装,请先安装 Node.js >= 18.0.0"
exit 1
fi
echo "✅ Node.js 版本: $(node --version)"
echo "✅ npm 版本: $(npm --version)"
echo ""
# 选择数据库模式
echo "请选择数据库模式:"
echo "1) SQLite快速启动无需安装数据库"
echo "2) PostgreSQL完整功能需要先安装PostgreSQL"
read -p "请输入选择 (1/2): " db_choice
if [ "$db_choice" = "2" ]; then
# PostgreSQL 模式
if ! command -v psql &> /dev/null; then
echo "⚠️ PostgreSQL 未检测到"
echo "请先安装 PostgreSQL 或选择 SQLite 模式"
echo ""
echo "macOS 安装 PostgreSQL:"
echo " brew install postgresql@15"
echo " brew services start postgresql@15"
exit 1
fi
# 使用PostgreSQL
echo "DATABASE_URL=\"postgresql://admin:password@localhost:5432/reading_platform\"" > $BACKEND_DIR/.env.development
else
# SQLite 模式
echo "DATABASE_URL=\"file:./dev.db\"" > $BACKEND_DIR/.env.development
fi
# 添加其他环境变量
cat >> $BACKEND_DIR/.env.development << 'EOF'
NODE_ENV=development
PORT=3000
JWT_SECRET="your-super-secret-jwt-key"
JWT_EXPIRES_IN="7d"
FRONTEND_URL="http://localhost:5173"
EOF
echo ""
echo "📦 安装后端依赖..."
cd $BACKEND_DIR
if [ ! -d "node_modules" ]; then
npm install
fi
echo ""
echo "🔧 配置数据库..."
npx prisma generate
if [ "$db_choice" = "2" ]; then
echo "⚠️ 请确保已创建PostgreSQL数据库 'reading_platform'"
echo " 创建命令:"
echo " createdb reading_platform -U admin"
read -p "按Enter继续..."
else
echo "📊 使用SQLite数据库"
fi
npx prisma migrate dev --name init
echo ""
echo "🚀 启动后端服务..."
npm run start:dev &
BACKEND_PID=$!
# 等待后端启动
sleep 5
echo ""
echo "📦 安装前端依赖..."
cd $FRONTEND_DIR
if [ ! -d "node_modules" ]; then
npm install
fi
echo ""
echo "🚀 启动前端服务..."
npm run dev &
FRONTEND_PID=$!
echo ""
echo "✅ 服务启动完成!"
echo ""
echo "📍 访问地址:"
echo " 前端http://localhost:5173"
echo " 后端http://localhost:3000/api/v1"
echo ""
echo "🔑 测试账号:"
echo " 超管端admin / 123456"
echo ""
echo "按 Ctrl+C 停止所有服务"
# 等待用户中断
wait