No description
  • TypeScript 58.4%
  • Python 22.4%
  • Vue 9.7%
  • CSS 5.6%
  • JavaScript 2.2%
  • Other 1.7%
Find a file
2026-06-22 14:03:05 +08:00
.gitea/workflows Initial commit 2026-06-22 14:03:05 +08:00
.qoder Initial commit 2026-06-22 14:03:05 +08:00
apps Initial commit 2026-06-22 14:03:05 +08:00
docs Initial commit 2026-06-22 14:03:05 +08:00
infra Initial commit 2026-06-22 14:03:05 +08:00
k8s Initial commit 2026-06-22 14:03:05 +08:00
packages Initial commit 2026-06-22 14:03:05 +08:00
rules Initial commit 2026-06-22 14:03:05 +08:00
templates Initial commit 2026-06-22 14:03:05 +08:00
.gitignore Initial commit 2026-06-22 14:03:05 +08:00
.npmrc Initial commit 2026-06-22 14:03:05 +08:00
.prettierrc.json Initial commit 2026-06-22 14:03:05 +08:00
AGENTS.md Initial commit 2026-06-22 14:03:05 +08:00
lai.yaml Initial commit 2026-06-22 14:03:05 +08:00
package.json Initial commit 2026-06-22 14:03:05 +08:00
pnpm-lock.yaml Initial commit 2026-06-22 14:03:05 +08:00
pnpm-workspace.yaml Initial commit 2026-06-22 14:03:05 +08:00
README.md Initial commit 2026-06-22 14:03:05 +08:00
turbo.json Initial commit 2026-06-22 14:03:05 +08:00

Fastify Vue 管理后台 Monorepo

这是一个面向企业后台业务的全栈脚手架,采用 pnpm workspace + turbo 管理 Monorepo。

技术栈包括:

  • 后端:Fastify + TypeScript
  • 前端:Vue3 + Vite + Vue Router
  • UImeri-plus + Tailwind CSS
  • 数据库:MySQL 8 + Prisma
  • 缓存:Redis
  • 接口契约:Zod
  • 测试:Vitest

目录结构

apps/
  web/         Vue 管理后台
  server/      Fastify API 服务
packages/
  api-contract/  前后端共享接口 schema、DTO、类型
  shared/        通用常量、类型、纯函数
  eslint-config/ 统一 ESLint 配置
  tsconfig/      统一 TypeScript 配置
infra/
  docker/      MySQL、Redis 本地开发环境
  nginx/       Nginx 反向代理示例
docs/          架构说明和运行手册

快速开始

pnpm install
cp apps/server/.env.example apps/server/.env
pnpm --filter @app/server prisma:generate
pnpm dev

默认地址:

  • 前端:http://127.0.0.1:3200
  • 后端:http://127.0.0.1:3201
  • Swaggerhttp://127.0.0.1:3201/docs

本地基础设施

启动 MySQL 和 Redis

pnpm db:up

或者直接使用 Docker Compose

docker compose -f infra/docker/docker-compose.yml up -d

数据库相关命令:

pnpm --filter @app/server prisma:generate
pnpm --filter @app/server prisma:migrate

常用命令

pnpm dev          # 同时启动 web 和 server
pnpm dev:web      # 只启动前端
pnpm dev:server   # 只启动后端
pnpm build        # 构建所有应用和包
pnpm typecheck    # 类型检查
pnpm lint         # ESLint 检查
pnpm test         # 运行测试

测试策略

apps/server 放服务端自身测试,优先使用 Fastify.inject() 做快速半集成测试。

apps/web 放前端自身测试,当前使用 Vitest 验证路由和前端基础逻辑。

多租户约定

当前脚手架按“共享库共享表”模型设计:

  • 业务表默认包含 tenant_id
  • 后端通过请求上下文解析当前租户
  • 查询逻辑应通过 service 或 repository 统一注入租户条件
  • 高频查询和唯一约束优先设计为 (tenant_id, 业务字段)
  • 前端不应直接决定核心数据查询使用哪个租户

packages/shared 中提供了租户请求头常量和基础租户上下文类型。

参考文档

更多说明见:

Sandbox / Qoder 补充资料

仓库中包含从 sandbox 服务模板同步来的 .qoder/templates/ 和部分 docs/ 资料,用于约束需要调用老产品测试接口、编写研发 Review 交接说明、自测报告或 sandbox 部署说明的场景。

这些资料是当前 Monorepo 的补充约束,不替代本 README、AGENTS.mdrules/web.mdrules/server.md 中定义的项目事实。若补充资料与当前实现不一致,以当前实现为准:

  • 当前项目是 apps/web + apps/server 的 pnpm/turbo Monorepo不是单服务初始化模板。
  • 当前项目本地基础设施包含 MySQL 和 Redis。
  • 当前项目数据库迁移入口是 Prismapnpm --filter @app/server prisma:migrate
  • 当前仓库暂未内置 Forgejo Actions、K8S 部署文件、sandbox 日志脚本或 /version 接口;相关文档仅作为后续接入 sandbox 部署时的参考。