# webTemplate **Repository Path**: whenTheMorningDark/web-template ## Basic Information - **Project Name**: webTemplate - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-23 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # web-template 基于 Vue 3 + NestJS 的全栈后台管理系统 ## 项目简介 web-template 是一个现代化的全栈后台管理系统前端模板,采用了业界主流的技术栈进行构建。前端基于 Vue 3、Vite、Ant Design Vue,后端基于 NestJS、TypeORM,支持 RESTful API 和 WebSocket 通信,具备完整的权限认证、RBAC 角色权限、数据分页、任务调度等功能。 ## 技术栈 ### 前端 (web-admin) - **框架**: Vue 3 + Composition API - **构建工具**: Vite 5.x - **UI 组件库**: Ant Design Vue 4.x - **状态管理**: Pinia - **路由**: Vue Router 4 - **国际化**: vue-i18n - **样式方案**: Less + CSS Modules - **代码规范**: ESLint + Prettier - **提交规范**: Commitlint + Husky ### 后端 (web-api) - **框架**: NestJS 10.x - **数据库**: TypeORM + MySQL - **缓存**: Redis - **任务调度**: Bull + Redis - **API 文档**: Swagger/OpenAPI - **WebSocket**: Socket.io - **消息推送**: SSE (Server-Sent Events) ## 功能特性 ### 前端功能 - 🏗️ **完善的目录结构**: 基础组件、业务组件、核心组件分层组织 - 🎨 **深色主题支持**: 内置主题切换功能 - 🌐 **国际化支持**: 中英文切换,开箱即用 - 🔐 **权限控制**: 基于角色的访问控制 (RBAC) - 📱 **响应式布局**: 适配多种屏幕尺寸 - 📊 **动态表格**: 强大的数据表格组件,支持排序、筛选、导出 - 📝 **动态表单**: 灵活的表单配置,支持异步数据获取 - 🖼️ **文件预览**: 支持多种文件格式在线预览 - 📋 **标签页管理**: 多标签页切换与状态保持 - 🔔 **锁屏功能**: 多种锁屏样式可选 ### 后端功能 - 🔐 **JWT 认证**: 支持 Access Token 和 Refresh Token 双令牌机制 - 👥 **用户管理**: 完整的用户 CRUD 操作 - 🏢 **部门管理**: 组织架构管理 - 🔑 **角色管理**: 角色权限分配 - 📋 **菜单管理**: 动态路由菜单生成 - 📧 **邮件服务**: 邮件发送与模板支持 - 💾 **文件存储**: 本地存储和 OSS 对象存储支持 - 📤 **文件上传**: 大文件分片上传 - 📊 **系统监控**: 在线用户、服务状态监控 - 📝 **操作日志**: 登录日志、任务日志记录 - ⏰ **任务调度**: 定时任务管理 - 🔄 **数据缓存**: Redis 缓存支持 - 🔁 **幂等控制**: 请求幂等性保证 - 📡 **WebSocket**: 实时通信支持 - 📩 **SSE 推送**: 服务端事件推送 ## 项目结构 ``` web-template/ ├── web-admin/ # 前端项目 │ ├── public/ # 静态资源 │ ├── src/ │ │ ├── api/ # API 接口定义 │ │ ├── assets/ # 资源文件 │ │ ├── components/ # 组件 │ │ │ ├── basic/ # 基础组件 │ │ │ ├── business/ # 业务组件 │ │ │ └── core/ # 核心组件 │ │ ├── constants/ # 常量定义 │ │ ├── enums/ # 枚举类型 │ │ ├── hooks/ # 组合式函数 │ │ ├── layouts/ # 布局组件 │ │ ├── locales/ # 国际化资源 │ │ ├── plugins/ # 插件配置 │ │ ├── router/ # 路由配置 │ │ ├── store/ # Pinia 状态管理 │ │ ├── styles/ # 样式文件 │ │ ├── utils/ # 工具函数 │ │ └── views/ # 页面视图 │ ├── packages/ # 自定义包 │ │ ├── vite-plugin-http2-proxy/ │ │ ├── vite-plugin-msw/ │ │ └── vite-plugin-tinymce-resource/ │ └── types/ # TypeScript 类型定义 │ └── web-api/ # 后端项目 ├── src/ │ ├── common/ # 公共模块 │ │ ├── adapters/ # 适配器 │ │ ├── decorators/ # 自定义装饰器 │ │ ├── dto/ # 数据传输对象 │ │ ├── entities/ # 实体类 │ │ ├── exceptions/ # 异常处理 │ │ ├── filters/ # 过滤器 │ │ ├── interceptors/# 拦截器 │ │ ├── model/ # 数据模型 │ │ └── pipes/ # 管道 │ ├── config/ # 配置文件 │ ├── constants/ # 常量定义 │ ├── global/ # 全局配置 │ ├── helper/ # 辅助函数 │ ├── migrations/ # 数据库迁移 │ ├── modules/ # 功能模块 │ │ ├── auth/ # 认证模块 │ │ ├── health/ # 健康检查 │ │ ├── netdisk/ # 网盘管理 │ │ ├── sse/ # SSE 推送 │ │ ├── system/ # 系统管理 │ │ ├── tasks/ # 任务调度 │ │ ├── todo/ # 待办事项 │ │ ├── tools/ # 工具模块 │ │ └── user/ # 用户模块 │ ├── shared/ # 共享模块 │ │ ├── database/ # 数据库 │ │ ├── helper/ # 辅助服务 │ │ ├── logger/ # 日志服务 │ │ ├── mailer/ # 邮件服务 │ │ └── redis/ # Redis 服务 │ ├── socket/ # WebSocket │ └── utils/ # 工具函数 ├── deploy/ # 部署配置 └── scripts/ # 脚本文件 ``` ## 环境要求 ### 前端 - Node.js 18.x 或更高版本 - pnpm 8.x 或更高版本 ### 后端 - Node.js 18.x 或更高版本 - MySQL 8.0 或更高版本 - Redis 6.x 或更高版本 - pnpm 8.x 或更高版本 ## 快速开始 ### 1. 克隆项目 ```bash git clone https://gitee.com/whenTheMorningDark/web-template.git cd web-template ``` ### 2. 安装依赖 ```bash # 安装前端依赖 cd web-admin pnpm install # 安装后端依赖 cd ../web-api pnpm install ``` ### 3. 配置环境变量 ```bash # 前端配置 cd web-admin cp .env.example .env.development # 编辑 .env.development 配置开发环境变量 # 后端配置 cd ../web-api cp .env.example .env.development # 编辑 .env.development 配置开发环境变量 ``` ### 4. 初始化数据库 ```bash # 执行数据库迁移 cd web-api pnpm migration:run # 或者导入初始化 SQL 文件 # mysql -u root -p < deploy/sql/nest_admin.sql ``` ### 5. 启动项目 #### 开发模式 ```bash # 启动前端 (web-admin) cd web-admin pnpm dev # 启动后端 (web-api) cd web-api pnpm start:dev ``` #### 生产模式 ```bash # 构建前端 cd web-admin pnpm build # 启动后端 cd web-api pnpm build pnpm start:prod ``` ## Docker 部署 ### 使用 Docker Compose ```bash # 开发环境 docker-compose -f docker-compose.yml up -d # 生产环境 docker-compose -f docker-compose.prod.yml up -d ``` ### 手动构建 ```bash # 构建前端镜像 cd web-admin docker build -t web-admin:latest . # 构建后端镜像 cd ../web-api docker build -t web-api:latest . ``` ## API 文档 后端服务启动后,可通过以下地址访问 Swagger API 文档: ``` http://localhost:7001/api ``` ## 默认账号 项目初始化后,可使用以下账号登录: - **管理员账号**: admin / 123456 - **测试账号**: test / 123456 > ⚠️ **安全提示**: 请在生产环境中及时修改默认密码! ## 核心组件说明 ### DynamicTable (动态表格) 支持列配置、排序、筛选、分页、导出等功能的强大表格组件。 ```vue ``` ### SchemaForm (动态表单) 基于 JSON Schema 的动态表单组件,支持多种表单项类型。 ```vue ``` ## 提交规范 本项目使用 Commitlint 规范提交信息: ``` feat: 新功能 fix: 修复 Bug docs: 文档更新 style: 代码格式调整 refactor: 重构代码 perf: 性能优化 test: 单元测试 chore: 构建配置更新 ``` ## 浏览器支持 | 浏览器 | 支持版本 | |--------|----------| | Chrome | >= 90 | | Firefox | >= 88 | | Safari | >= 14 | | Edge | >= 90 | ## 许可证 本项目基于 MIT 协议开源。 ## 贡献指南 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 相关资源 - [Vue 3 文档](https://vuejs.org/) - [Ant Design Vue](https://antdv.com/) - [NestJS 文档](https://nestjs.com/) - [TypeORM 文档](https://typeorm.io/) ## 致谢 感谢以下开源项目: - [Vue](https://vuejs.org/) - [Ant Design Vue](https://antdv.com/) - [NestJS](https://nestjs.com/) - [Vite](https://vitejs.dev/) - [TypeORM](https://typeorm.io/) - [Pinia](https://pinia.vuejs.org/) - [ulog](https://github.com/unawesome/ulog)