PmHub 是一套基于 SpringCloud & LLM 的微服务智能项目管理系统,这个项目旨在帮助小伙伴们快速掌握微服务/分布式项目的架构设计和开发流程,如果想在校招或者社招中拿到一个满意的 offer,PmHub 将是一个非常 nice 的选择。
项目亮点
- 热门技术:采用时下企业最热门的技术框架,如 SpringCloud-Gateway、Nacos、Sentinel 等,主打一个硬核,与真实的企业项目接轨。
- 单体与微服务:提供单体和微服务两个版本,完美照顾零基础和需要进阶的同学,带大家体验从单体到微服务架构的改造全过程,并深入理解两种架构的优缺点。
- 硬核面试题:我们将结合付费球友的实际面试体验,为大家提供可以真正吊打面试官的真是面试场景和题目,并提供 1v1 的简历修改服务,主打一个投了就有、面了就拿 offer 的快乐体感。
- 代码质量:由蚂蚁金服工作过的技术专家苍何亲自下场,严格遵循代码规范和最佳实践,帮大家养成优雅的代码编写习惯。
- 持续集成:提供持续集成和持续部署的完整配置,带你从 0-1 用 Docker 上线 生产环境级别的真实项目。
- 产品设计:提供完整的产品设计文档,包括产品需求、产品架构、产品原型等,这是别的项目不曾给你的,但工作后又不可或缺的能力。
- 企业工作流:提供企业级的工作流系统,代码完全开源,你可以在此基础上进行二开,为公司节省巨额的研发成本,从而升职加薪。
一、项目简介
PmHub 包括认证、流程、项目管理、用户、网关等服务。包含了 Redis 缓存、RocketMQ 消息队列、Docker 容器化、Jenkins 自动化部署、Spring Security 安全框架、Nacos 服务注册和发现、Sentinel 熔断限流、Seata 分布式事务、Spring Boot Actuator 服务监控、SkyWalking 链路追踪、OpenFeign 服务调用,Vue3 前端框架等互联网开发中需要用到的主流技术栈,可以帮助同学们快速掌握微服务/分布式项目的核心知识点。
并且同时 PmHub 也是一套企业工作流的开发框架,您可以根据自身需求,快速定制出适合自己公司的企业工作流系统。
如果对开源项目感兴趣,可以关注来个 offer 的另外一个实战项目:技术派,一个前后端分离的社区项目。GitHub 上已经星标 1.5k+,不少同学就是靠这个项目在往年的校招中拿到了不错的 offer。
为了方便大家循序渐进式的学习,我们已经推出两个版本:
- 单体架构版本:适合初学者,直接运行 pmhub-boot 模块下的 pmhub-admin 中的 PmhubApplication 类即可。
- 微服务架构版本:适合有一定基础,想进阶学习微服务/分布式的同学,可以分别启动网关、认证、流程、项目管理、代码生成等多个服务。
可以根据自己的实际情况选择合适的版本进行学习,我们将会倾其所有,在第一时间帮助大家解决所有学习过程遇到的问题,让你的学习曲线变得非常丝滑😁。

此为 PmHub 微服务版本说明文档!单体版本说明文档请移步:单体版本说明
二、关于来个 offer 组织
来个 offer 组织由二哥发起,苍何主理,旨在帮助同学们在校招、社招中拿到满意的 offer。
- 二哥,原创公众号“沉默王二”累计 18 万+ 读者,GitHub 星标 11000+ 开源知识库《二哥的 Java 进阶之路》作者,帮助很多很多同学成功拿到满意的 offer。
- 苍何,原创公众号“苍何”作者,CSDN 博客专家,阿里云专家博主,GitHub 开发者计划成员,前大厂技术专家,技术、管理、面试经验丰富。
加入PmHub官方编程星球后,即可来个 offer 组织下的所有项目的付费文档及产品原型,以及 1 对 1 的技术面试辅导服务。
项目 |
码云 |
GitHub |
简介 |
PmHub |
Gitee |
GitHub |
一套智能项目管理系统,即将帮助不少同学在接下来的校招/社招中斩获满意 offer。 |
技术派 |
Gitee |
GitHub |
一个前后端分离的社区项目,帮助过不少同学在秋招中斩获满意 offer。 |
三、项目详情
3.1、技术架构
下面这张系统架构图可以帮助大家快速了解 PmHub 项目的系统架构,从前端到网关、从服务应用到基础服务组件、从存储技术到运维部署,可以说是一目了然。

下面这张架构选型图可以帮助大家快速了解 PmHub 项目的技术选型,以及在官方手册中会更详细的说明我们为什么选择该技术,毕竟授人以鱼不如授人以渔嘛。

下面这张技术架构图可以帮助大家快速了解 PmHub 项目的技术架构,以及各个模块之间的交互关系。

优质的项目,离不开一张清晰的鸟瞰图(😄)。
3.2、项目演示





3.3、代码展示

3.4、代码结构
com.laigeoffer.pmhub
├── pmhub-ui // 前端框架 [1024]
├── pmhub-gateway // 网关模块 [6880]
├── pmhub-auth // 认证中心 [6800]
├── pmhub-api // 接口模块
│ └── pmhub-api-system // 系统接口
│ └── pmhub-api-workflow // 流程接口
├── pmhub-base // 通用模块
│ └── pmhub-base-core // 核心模块组件
│ └── pmhub-base-datasource // 多数据源组件
│ └── pmhub-base-seata // 分布式事务组件
│ └── pmhub-base-security // 安全模块组件
│ └── pmhub-base-swagger // 系统接口组件
│ └── pmhub-base-notice // 消息组件组件
├── pmhub-ules // 业务模块
│ └── pmhub-system // 系统模块 [6801]
│ └── pmhub-gen // 代码生成 [6802]
│ └── pmhub-job // 定时任务 [6803]
│ └── pmhub-project // 项目服务 [6806]
│ └── pmhub-workflow // 流程服务 [6808]
├── pmhub-monitor // 监控中心 [6888]
├──pom.xml // 公共依赖
四、项目部署
单体版本请参考:单体版本部署手册
4.1、环境准备
4.2、后端项目启动
第一步,下载项目源码
①、使用 Git 命令
网络比较通畅的小伙伴可以直接从 GitHub 上拉取,命令如下:
git clone mailto:git@github.com:laigeoffer/pmhub.git
国内的小伙伴也可以直接使用码云 Gitee 上的镜像仓库地址拉取:
git clone https://gitee.com/laigeoffer/pmhub.git
②、直接下载压缩包
也可以直接下载 GitHub 上的压缩包,然后解压到本地。

③、直接通过 GitHub 桌面版
我个人一直比较喜欢实用 GitHub 桌面版来管理仓库,图形化界面操作起来也比较舒服。

第二步,使用 Intellij IDEA 导入项目
这一步应该就不需要我多讲了,相信大家都能搞定。

第三步,导入数据库
推荐大家使用 Navicat 这款图形化数据库管理工具。
数据库文件路径在 pmhub/sql/,在Navicat中导入所有数据库文件(每一个微服务对应一个数据库)

可以直接右键在 terminal 终端中打开,然后通过 pwd 和 ls 命令查看文件的绝对路径。

拿到绝对路径后,就可以在 Navicat 中导入数据库文件了。

导入完成后,刷新一下就可以看到最新的数据库表了。
(当然你也可以直接复制sql,然后在Navicat执行)
第四步,基础环境准备
可以选择本机直接安装 MySQL,也可以通过 Docker 的方式,但需要做好磁盘挂载,推荐本机安装!
①、如果你是 macOS 用户,可以直接在终端输入redis-server
启动 Redis。

②、如果你是 Windows 用户,可以直接双击 redis-server.exe 启动 Redis。
③、当然也可以直接通过 Docker 启动 Redis。
# 拉取 Redis 镜像:
docker pull redis
# 启动 Redis 容器:
docker run --name my-redis -d redis
官网下载 Nacos,找到 /conf/application.properties 文件,修改数据库连接信息。可以直接复制 pmhub/docker/nacos/conf/application.properties 内容。
修改下数据库配置信息为你自己的数据库,本地启动可以把鉴权关了。
1. 如果数据库名也是 pmhub-nacos,那么只需要修改用户名和密码即可。
2. 如果用户名也是 root,那么只需要修改密码即可。
3. 如果密码也一样,那么就不需要修改了(不可能,绝对不可能这么巧😂)。

①、如果你是 macOS 用户,可以直接在终端输入sh startup.sh -m standalone
启动 Nacos。
②、如果你是 Windows 用户,可以直接双击 startup.cmd 启动 Nacos。
启动成功后访问 http://localhost:8848/nacos 即可看到 Nacos 控制台。默认用户名密码都是 nacos。

- 4、启动 SkyWalking 分布式链路追踪(非必须)
参考手册:SkyWalking 启动手册
- 5、启动 Sentinel 分布式熔断和降级(非必须)
参考手册:Sentinel 启动手册
参考手册:Seata 启动手册
参考手册:Rocketmq 启动手册
第五步,启动各个微服务
注意:如果遇到服务启动失败,可自行查看 nacos 配置是否做了修改,如数据库连接信息等。
①、启动 pmhub-gateway 网关服务
找到 pmhub-gateway 项目,右键 Run PmHubGatewayApplication.main()。

②、启动 pmhub-auth 认证服务
找到 pmhub-auth 项目,右键 Run PmHubAuthApplication.main()。
③、启动 pmhub-system 系统服务
找到 pmhub-system 项目(在pmhub-ules 下),右键 Run PmHubSystemApplication.main()。
pmhub-system 启动前需要修改 nacos 中的 pmhub-system-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。

④、启动 pmhub-project 项目管理服务
找到 pmhub-project 项目(在pmhub-ules 下),右键 Run PmHubProjectApplication.main()。
启动前需要修改 nacos 中的 pmhub-project-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
⑤、启动 pmhub-workflow 流程管理服务
找到 pmhub-workflow 项目(在pmhub-ules 下),右键 Run PmHubWorkflowApplication.main()。
启动前需要修改 nacos 中的 pmhub-workflow-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
⑥、启动 pmhub-gen 代码生成服务
找到 pmhub-gen 项目(在pmhub-ules 下),右键 Run PmHubGenApplication.main()。
启动前需要修改 nacos 中的 pmhub-gen-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
⑦、启动 pmhub-job 定时任务调度服务
找到 pmhub-job 项目(在pmhub-ules 下),右键 Run PmHubJobApplication.main()。
启动前需要修改 nacos 中的 pmhub-job-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
⑧、启动 pmhub-monitor 监控服务
找到 pmhub-monitor 项目,右键 Run PmHubMonitorApplication.main()。
启动前需要修改 nacos 中的 pmhub-monitor-dev.yml 配置文件,修改监控后台的用户名和密码,以及首页展示标题。
启动成功后可访问:http://localhost:6888/wallboard
可以在线实时查案各个服务的状态以及日志:

4.3、前端项目启动
请参考 pmhub-ui 项目的 README.md 文档,前端工程结构说明
注意:微服务版本直接启动 pmhub-ui 即可,如果是单体版本的前端需要到 pmhub-boot下的 pmhub-ui 启动。
4.4、Swagger 地址
http://localhost:1024/dev-api/swagger-ui/index.html
4.5、服务器部署(Docker 方式)
请参考 云容器部署系统
五、技术选型
后端技术栈
六、PmHub 教程
PmHub 高质量教程共 70+ 篇,从中整理出 10 篇,供大家免费学习。
七、环境搭建
开发工具
开发环境
搭建步骤
本地部署教程
本地开发环境手把手教程
云服务器部署教程
环境搭建 & 基于源码的部署教程
服务器docker启动教程
八、功能
功能我们使用了若依的框架,为什么要用若依,一来我们觉得基础的后台功能没有必要再重复造轮子,我们需要节省时间花力气在项目核心业务上,二来我们希望站在巨人的肩膀上,若依是后台系统中很优秀的框架,我们基于其做的二次开发,相信也能再创辉煌!
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
- 系统接口:根据业务代码自动生成相关的api接口文档。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 缓存监控:对系统的缓存信息查询,命令统计等。
- 在线构建器:拖动表单元素生成相应的HTML代码。
- 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
九、友情链接
- paicoding :⭐️一款好用又强大的开源社区,基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等主流技术栈
- toBeBetterjavaer :🚀一份通俗易懂、风趣幽默的Java学习指南,内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java,就认准二哥的Java进阶之路😄
- CodeCanvas :📚本代码仓库是作者苍何多年从事一线互联网Java开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。💪🏻
十、鸣谢
感谢所有参与开源贡献的小伙伴,PmHub 因你们而更强大!
十一、star 趋势图

十二、公众号
微信搜 苍何 或扫描下方二维码关注苍何的原创公众号,回复 666 即可免费领取 2000G 编程学习。

十三、许可证
MIT License (MIT)<hr/>
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
Copyright (c) 2023-2024 PmHub(苍何、沉默王二)