build: add dev startup scripts and project docs

添加了Windows的start.bat和Linux/macOS的start.sh一键启动脚本,补充了完整的项目README文档,同时修复了前端类型文件的导入路径问题
This commit is contained in:
2026-09-14 16:53:54 +08:00
parent e2e5ba077c
commit f58b2af993
4 changed files with 378 additions and 2 deletions

91
start.sh Normal file
View File

@@ -0,0 +1,91 @@
#!/usr/bin/env bash
set -euo pipefail
# ═══════════════════════════════════════════
# 姜十三论坛 开发环境启动脚本 (Linux/macOS)
# ═══════════════════════════════════════════
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$ROOT_DIR"
echo "══════════════════════════════════════════"
echo " 姜十三论坛 开发环境启动脚本"
echo "══════════════════════════════════════════"
echo ""
# ---- 1. 启动 PostgreSQL ----
echo "[1/3] 启动数据库 (Docker Compose)..."
if ! command -v docker &>/dev/null; then
echo "✗ 未检测到 docker,请先安装 Docker"
exit 1
fi
docker compose up -d postgres
echo "√ 数据库已启动"
echo ""
# ---- 2. 检查后端配置 ----
echo "[2/3] 检查后端配置..."
if [ ! -f "backend/app.ini" ]; then
cp "backend/app.ini.example" "backend/app.ini"
echo " 已从模板创建 backend/app.ini,请按需修改配置"
fi
mkdir -p backend/data
# 启动后端(后台)
echo " 启动后端 (端口 3001)..."
cd "$ROOT_DIR/backend"
go run ./cmd/jiang13 &
BACKEND_PID=$!
cd "$ROOT_DIR"
echo "√ 后端已启动 (PID: $BACKEND_PID)"
echo ""
# ---- 3. 检查前端配置 ----
echo "[3/3] 检查前端配置..."
if [ ! -f "frontend/.env.local" ]; then
cp "frontend/.env.example" "frontend/.env.local"
echo " 已从模板创建 frontend/.env.local"
fi
# 检查 node_modules
if [ ! -d "frontend/node_modules" ]; then
echo " 首次运行,安装前端依赖..."
cd "$ROOT_DIR/frontend"
npm install
cd "$ROOT_DIR"
fi
# 启动前端(后台)
echo " 启动前端 (端口 3000)..."
cd "$ROOT_DIR/frontend"
npm run dev &
FRONTEND_PID=$!
cd "$ROOT_DIR"
echo "√ 前端已启动 (PID: $FRONTEND_PID)"
echo ""
echo "══════════════════════════════════════════"
echo " 全部启动完成!"
echo ""
echo " 前端: http://localhost:3000"
echo " 后端: http://localhost:3001"
echo " 数据库: localhost:5432"
echo ""
echo " 后端 PID: $BACKEND_PID"
echo " 前端 PID: $FRONTEND_PID"
echo " 停止服务: kill $BACKEND_PID $FRONTEND_PID && docker compose down"
echo "══════════════════════════════════════════"
# 捕获 Ctrl+C,清理子进程
cleanup() {
echo ""
echo "正在停止服务..."
kill $BACKEND_PID 2>/dev/null || true
kill $FRONTEND_PID 2>/dev/null || true
docker compose down 2>/dev/null || true
echo "已停止"
}
trap cleanup EXIT INT TERM
# 保持脚本运行
wait