Go + React 管理后台模板。仓库保持前后端分离开发,生产部署走单应用镜像:
backend/:Gin API、RBAC、文件上传、通知、Swagger、SQL migrationsfrontend/:React 19 + Vite 管理台docker-compose.yml:PostgreSQL、Redis、backend 全栈编排
.
├─ backend/
├─ frontend/
├─ docker-compose.yml
└─ Makefile
开发时继续保持前后端分离:
make docker-up
make migrate-up
make dev-backend
make dev-frontend说明:
- 根目录命令默认通过 GNU Make 执行。
- 如果当前机器没有
make,可直接运行对应的bun、go、docker compose原生命令。 make docker-up只启动 PostgreSQL 和 Redis,方便本地前后端直接跑。- 前端通过 Vite proxy 转发
/api和/api/v1/ws。 - 后端默认读取
backend/config.yaml,需要覆盖时使用环境变量。
默认地址:
- 前端:
http://localhost:5173 - 后端:
http://localhost:8080 - Swagger:
http://localhost:8080/swagger/index.html(debug模式) - PostgreSQL:
localhost:5434 - Redis:
localhost:6380
生产目标是一个后端容器同时提供 API 和前端静态资源:
docker compose up -d启动链路:
postgres启动并通过健康检查。redis启动并通过健康检查。backend容器启动时自动执行backend/migrations。backend容器提供 API、/healthz、/readyz和前端页面。
补充命令:
make docker-up-full
make docker-down说明:
- 当前仓库采用应用启动内自动迁移,通过
SERVER_AUTO_MIGRATE=true控制。 - 生产容器内后端会托管
frontend/dist,刷新前端深链不会 404。 - Redis 对宿主机默认映射到
6380,避免与本机已安装 Redis 的6379冲突。
推荐分工:
backend/config.yaml:提交到仓库的开发默认值backend/.env.example:可覆盖的环境变量示例- Docker Compose
environment:容器部署注入
决策:
- 后端进程当前不自动读取
.env - 本地开发覆盖通过 shell 环境变量完成
- 容器部署覆盖通过 Compose
environment或env_file完成
高频变量:
SERVER_MODESERVER_PORTSERVER_FRONTEND_DISTSERVER_AUTO_MIGRATEDB_HOST/DB_PORT/DB_USER/DB_PASSWORD/DB_NAME/DB_SSL_MODEREDIS_HOST/REDIS_PORT/REDIS_PASSWORD/REDIS_DBJWT_SECRET/JWT_REFRESH_SECRETUPLOAD_DIRCORS_ORIGINS
make docker-up
make docker-up-full
make docker-down
make migrate-up
make migrate-down
make dev-backend
make dev-frontend
make build-frontend
make typecheck-frontend
make format-check-frontend
make test-backend
make test-frontend
make lint-frontend
make lint-backend
make verify-clean-machine
make swag-init
make gen-types用于新机器或重装后的环境自检,统一检查 PATH 中的基础工具,并按仓库现有 Makefile 跑最小验证链。
Windows PowerShell:
.\scripts\verify-clean-machine.ps1
make verify-clean-machinemacOS / Linux:
./scripts/verify-clean-machine.sh可选参数:
- 默认执行:Docker 配置检查、后端
lint + test、前端typecheck + lint + build-check format-check默认不跑,因为仓库当前仍有历史格式债务;需要时显式开启- 前端测试默认不跑;需要时显式开启
示例:
.\scripts\verify-clean-machine.ps1 -IncludeFormatCheck -IncludeFrontendTests./scripts/verify-clean-machine.sh --include-format-check --include-frontend-tests前端:
make typecheck-frontend
make lint-frontend
make format-check-frontend
make build-check-frontend
make test-frontend后端:
make lint-backend
make test-backend一键启动链路:
docker compose build backend
docker compose up -d2026-04-29 实测通过:
docker compose build backenddocker compose up -dGET /healthzGET /readyzGET /GET /system/users
- 后端说明:backend/README.md
- 前端说明:frontend/README.md