项目结构
fullstack-starter/├── src/│ ├── index.ts # CLI 入口:交互式选择前端 / 后端 / 项目名│ └── generator.ts # 生成器:复制模板 + 生成配置与脚本文件├── templates/│ ├── base/ # 公共文件(.gitignore)│ ├── frontend-react/ # React 前端模板│ ├── frontend-vue/ # Vue 前端模板│ ├── backend-python/ # FastAPI 后端模板│ └── backend-java/ # Spring Boot 后端模板├── package.json└── tsconfig.jsontemplates/ 下的文件就是用户最终拿到的文件;生成器只负责复制模板,并动态生成 dev.sh、build.sh、Dockerfile、docker-compose.yml、.dockerignore、nginx.conf 和各项目 README。
my-project/├── frontend/ # 前端项目├── backend/ # 后端项目├── dev.sh # 开发脚本:start / stop / restart / install├── build.sh # 构建脚本:前端构建 + 后端检查├── Dockerfile # 单镜像:前端构建 + 后端 + Nginx├── docker-compose.yml # Docker 编排├── .dockerignore # Docker 构建排除项├── nginx.conf # Nginx 配置:静态文件 + /api 反代└── README.md # 项目说明文件夹src
文件夹api
- client.ts fetch 封装,401 自动登出
- auth.ts user.ts role.ts permission.ts menu.ts
- system.ts dashboard.ts ai-model.ts audit-log.ts data-management.ts
文件夹types
- common.ts auth.ts user.ts role.ts permission.ts menu.ts
- system.ts dashboard.ts ai-model.ts audit-log.ts
文件夹components
- admin-layout.tsx app-sidebar.tsx header.tsx login-form.tsx
- protected-route.tsx theme-provider.tsx theme-toggle.tsx
- shared 分页 / 确认删除 / 表格状态 / 加载按钮
- ui 24 个 shadcn/ui 组件
文件夹lib
- auth-context.tsx site-config.tsx toast.ts utils.ts
文件夹pages
- auth login.tsx register.tsx
- dashboard index.tsx
文件夹settings
- user role permission menu system ai-model audit-log data-management profile
- not-found.tsx
- router.tsx
- App.tsx
- main.tsx
- components.json shadcn 配置
- vite.config.ts 开发代理 /api → localhost:8088
- package.json
文件夹src
- api 同 React,按业务域拆分(client.ts + 业务域文件)
- types 按业务域拆分
文件夹components
- AppHeader.vue AppSidebar.vue ThemeToggle.vue
- ToastContainer.vue UnsupportedViewport.vue
- shared 分页 / 确认删除 / 表格状态 / 加载按钮 / 骨架屏
- layouts AdminLayout.vue
文件夹pages
- auth Login.vue Register.vue
- dashboard Index.vue
- settings AiModel / AuditLog / DataManagement / MenuManage / PermissionManage / Profile / RoleManage / System / UserManage
- NotFound.vue
- router index.ts
- stores auth.ts site-config.ts theme.ts
- composables use-toast.ts
- App.vue
- main.ts
- vite.config.ts 开发代理 /api → localhost:8088
- package.json
文件夹app
- main.py FastAPI 应用、CORS、审计中间件、路由注册
文件夹core
- config.py database.py security.py deps.py
- audit.py permissions_catalog.py menu_catalog.py
- app_state.py seed.py schemas.py
- auth user role permission menu
- system ai_model audit data_management dashboard public
- 每个领域含 models / schemas / crud / router
- pyproject.toml
- .env.example
领域模块化组织:每个业务域一个包,基础设施统一放在 core/。
文件夹src/main/java/com/hmilyld/fullstack
- FullstackApplication.java
- common ApiResponse / PageResult / 全局异常处理
- config 审计、CORS、Sa-Token、权限目录与同步任务
- controller
- dto
- entity
- repository
- security RateLimiter / StpInterfaceImpl
- service
文件夹src/main/resources
- application.yml
- db/migration/V1__init.sql 基础表与种子数据
- db/migration/V2__menu_and_app_state.sql 菜单表与运行状态
- pom.xml
按层组织:controller / service / repository / entity / dto,基础设施放在 common/、config/、security/。
| 文件 | 作用 |
|---|---|
dev.sh |
开发脚本,自动安装依赖并同时启动前后端 |
build.sh |
前端构建 + 后端代码检查 |
Dockerfile |
多阶段构建,产出含 Nginx 与后端的单镜像 |
nginx.conf |
监听 5173,提供前端静态文件并反代 /api/ 到后端 |
frontend/vite.config.ts |
开发时将 /api 代理到 localhost:8088 |