Giter Club home page Giter Club logo

iliming / pmhub Goto Github PK

View Code? Open in Web Editor NEW

This project forked from laigeoffer/pmhub

0.0 0.0 0.0 14.36 MB

🔥热门推荐🔥基于 SpringCloud & LLM 的智能项目管理系统,帮助学生主打就业的项目。该项目旨在帮助小伙伴们快速掌握微服务/分布式项目的架构设计和开发流程。如果你想在校招或者社招中拿到一个满意的 offer,PmHub 将是一个非常 nice 的选择😄。

Home Page: https://laigeoffer.cn/

License: MIT License

Shell 0.07% JavaScript 7.37% Java 52.57% HTML 0.96% PLpgSQL 10.54% Batchfile 0.01% Vue 27.62% Dockerfile 0.01% SCSS 0.85%

pmhub's Introduction

MaxKB

基于 SpringCloud & SpringCloud Alibaba & LLM 的智能项目管理系统

The MIT License Forks Official Stars Experience


PmHub 是一套基于 SpringCloud & SpringCloud Alibaba & LLM 的分布式微服务的智能项目管理系统,这个项目旨在让同学们快速掌握微服务/分布式项目的架构设计和开发流程,如果想在校招或者社招中拿到一个满意的 offer,PmHub 将是一个非常 nice 的选择。

项目亮点

  • 热门技术:采用时下企业最热门的技术框架,如 SpringCloud-Gateway、Nacos、Sentinel 等,主打一个硬核,与真实的企业项目接轨。
  • 单体与微服务:提供单体和微服务两个版本,完美照顾零基础和需要进阶的同学,带大家体验从单体到微服务架构的改造全过程,并深入理解两种架构的优缺点。
  • 硬核面试题:我们将结合付费球友的实际面试体验,为大家提供可以真正吊打面试官的真是面试场景和题目,并提供 1v1 的简历修改服务,主打一个投了就有、面了就拿 offer 的快乐体感。
  • 代码质量:由蚂蚁金服工作过的技术专家苍何亲自下场,严格遵循代码规范和最佳实践,帮大家养成优雅的代码编写习惯。
  • 持续集成:提供持续集成和持续部署的完整配置,带你从 0-1 用 Docker 上线 生产环境级别的真实项目。
  • 产品设计提供完整的产品设计文档,包括产品需求、产品架构、产品原型等,这是别的项目不曾给你的,但工作后又不可或缺的能力。
  • 企业工作流:提供企业级的工作流系统,代码完全开源,你可以在此基础上进行二开,为公司节省巨额的研发成本,从而升职加薪。

一、项目简介

PmHub 包括认证、流程、项目管理、系统、网关等服务。包含了 Redis 缓存、RocketMQ 消息队列、Docker 容器化、Jenkins 自动化部署、Spring Security 安全框架、Nacos 服务注册和发现、sentinel 分布式事务、Spring Boot Actuator 服务监控、SkyWalking 链路追踪、OAuth2 统一认证、OpenFeign 服务调用,Vue3 前端框架等互联网开发中需要用到的主流技术栈,可以帮助同学们快速掌握微服务/分布式项目的核心知识点。

并且同时 PmHub 也是一套企业工作流的开发框架,您可以根据自身需求,快速定制出适合自己公司的企业工作流系统。

如果对开源项目感兴趣,可以关注来个 offer 的另外一个实战项目:技术派,一个前后端分离的社区项目。GitHub 上已经星标 1.5k+,不少同学就是靠这个项目在往年的校招中拿到了不错的 offer。

为了方便大家循序渐进式的学习,我们已经推出两个版本:

  • 单体架构版本:适合初学者,直接运行 pmhub-boot 模块下的 pmhub-admin 中的 PmhubApplication 类即可。
  • 微服务架构版本:适合有一定基础,想进阶学习微服务/分布式的同学,可以分别启动网关、认证、流程、项目管理、代码生成等多个服务。

可以根据自己的实际情况选择合适的版本进行学习,我们将会倾其所有,在第一时间帮助大家解决所有学习过程遇到的问题,让你的学习曲线变得非常丝滑😁。

pmhub-业务架构图

此为 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-架构选型

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

pmhub-技术架构图

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

3.2、项目演示

首页展示 项目概览页 任务编辑页

3.3、代码展示

pmhub代码展示

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-modules         // 业务模块
│       └── pmhub-system                              // 系统模块 [6801]
│       └── pmhub-gen                                 // 代码生成 [6802]
│       └── pmhub-job                                 // 定时任务 [6803]
│       └── pmhub-project                             // 项目服务 [6806]
│       └── pmhub-workflow                            // 流程服务 [6808]
├── pmhub-monitor             						  // 监控中心 [6888]                 
├──pom.xml                                            // 公共依赖

四、项目部署

单体版本请参考:单体版本部署手册

4.1、环境准备

技术 名称 版本 官网
1 Spring Boot 基础框架 2.7.18 https://spring.io/projects/spring-boot
2 SpringCloud 微服务框架 2021.0.8 https://spring.io/projects/spring-cloud
3 SpringCloud Alibaba 阿里微服务框架 2021.0.5.0 https://github.com/alibaba/spring-cloud-alibaba
4 SpringCloud Gateway 服务网关 3.1.8 https://spring.io/projects/spring-cloud-gateway
5 MyBatis-Plus 持久层框架 3.5.1 https://baomidou.com
6 Redis 分布式缓存数据库 Latest https://redis.io
7 RocketMQ 消息队列 2.2.3 https://rocketmq.apache.org
8 HuTool 小而全的工具集项目 5.8.11 https://hutool.cn
9 Maven 项目构建管理 3.9.1 http://maven.apache.org
10 Sentinel 流控防护框架 1.8.6 https://github.com/alibaba/Sentinel
11 Java 开发版本 1.8 https://www.oracle.com/java/technologies

4.2、后端项目启动

第一步,下载项目源码

①、使用 Git 命令

网络比较通畅的小伙伴可以直接从 GitHub 上拉取,命令如下:

git clone [email protected]: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执行)

第四步,基础环境准备

  • 1、启动 MySQL(必须)

可以选择本机直接安装 MySQL,也可以通过 Docker 的方式,但需要做好磁盘挂载,推荐本机安装!

  • 2、启动 Redis(必须)

①、如果你是 macOS 用户,可以直接在终端输入redis-server启动 Redis。

②、如果你是 Windows 用户,可以直接双击 redis-server.exe 启动 Redis。

③、当然也可以直接通过 Docker 启动 Redis。

# 拉取 Redis 镜像:
docker pull redis
# 启动 Redis 容器:
docker run --name my-redis -d redis
  • 3、启动 Nacos(必须)

官网下载 Nacos,找到 /conf/application.properties 文件,修改数据库连接信息。可以直接复制 pmhub/docker/nacos/conf/application.properties 内容。

修改下数据库配置信息为你自己的数据库,本地启动可以把鉴权关了。

1. 如果数据库名也是 laigeoffer-pmhub,那么只需要修改用户名和密码即可。
2. 如果用户名也是 root,那么只需要修改密码即可。
3. 如果密码也一样,那么就不需要修改了(不可能,绝对不可能这么巧😂)。

修改nacos配置文件

①、如果你是 macOS 用户,可以直接在终端输入sh startup.sh -m standalone启动 Nacos。

②、如果你是 Windows 用户,可以直接双击 startup.cmd 启动 Nacos。

启动成功后访问 http://localhost:8848/nacos 即可看到 Nacos 控制台。默认用户名密码都是 nacos。

nacos启动成功界面

  • 4、启动 SkyWalking 分布式链路追踪(非必须)

参考手册:SkyWalking 启动手册

  • 5、启动 Sentinel 分布式熔断和降级(非必须)

参考手册:Sentinel 启动手册

  • 6、启动 Seata 分布式事务(非必须)

参考手册:Seata 启动手册

  • 7、启动 Rocketmq 消息队列(非必须)

参考手册:Rocketmq 启动手册

第五步,启动各个微服务

注意:如果遇到服务启动失败,可自行查看 nacos 配置是否做了修改,如数据库连接信息等。

①、启动 pmhub-gateway 网关服务

找到 pmhub-gateway 项目,右键 Run PmHubGatewayApplication.main()。

pmhub-gateway启动成功

②、启动 pmhub-auth 认证服务

找到 pmhub-auth 项目,右键 Run PmHubAuthApplication.main()。

③、启动 pmhub-system 系统服务

找到 pmhub-system 项目(在pmhub-modules 下),右键 Run PmHubSystemApplication.main()。 pmhub-system 启动前需要修改 nacos 中的 pmhub-system-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。

修改pmhub-system配置

④、启动 pmhub-project 项目管理服务

找到 pmhub-project 项目(在pmhub-modules 下),右键 Run PmHubProjectApplication.main()。

启动前需要修改 nacos 中的 pmhub-project-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。

⑤、启动 pmhub-workflow 流程管理服务

找到 pmhub-workflow 项目(在pmhub-modules 下),右键 Run PmHubWorkflowApplication.main()。

启动前需要修改 nacos 中的 pmhub-workflow-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。

⑥、启动 pmhub-gen 代码生成服务

找到 pmhub-gen 项目(在pmhub-modules 下),右键 Run PmHubGenApplication.main()。

启动前需要修改 nacos 中的 pmhub-gen-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。

⑦、启动 pmhub-job 定时任务调度服务

找到 pmhub-job 项目(在pmhub-modules 下),右键 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 文档,前端工程结构说明

4.4、Swagger 地址

http://localhost:1024/dev-api/swagger-ui/index.html

4.5、服务器部署(Docker 方式)

请参考 云容器部署系统

五、技术选型

后端技术栈

技术 说明 官网
Spring & SpringMVC Java全栈应用程序框架和WEB容器实现 https://spring.io/
SpringBoot Spring应用简化集成开发框架 https://spring.io/projects/spring-boot
SpringCloud 微服务框架 https://spring.io/projects/spring-cloud
mybatis-plus 数据库orm框架 https://baomidou.com/
mybatis PageHelper 数据库翻页插件 https://github.com/pagehelper/Mybatis-PageHelper
elasticsearch 近实时文本搜索 https://www.elastic.co/cn/elasticsearch/service
redis 内存数据存储 https://redis.io
rocketmq 消息队列 https://rocketmq.apache.org/
mongodb NoSql数据库 https://www.mongodb.com/
nginx 服务器 https://nginx.org
docker 应用容器引擎 https://www.docker.com
hikariCP 数据库连接 https://github.com/brettwooldridge/HikariCP
oss 对象存储 https://help.aliyun.com/document_detail/31883.html
https 证书 https://letsencrypt.org/
jwt jwt登录 https://jwt.io
lombok Java语言增强库 https://projectlombok.org
guava google开源的java工具集 https://github.com/google/guava
thymeleaf html5模板引擎 https://www.thymeleaf.org
swagger API文档生成工具 https://swagger.io
hibernate-validator 验证框架 hibernate.org/validator/
quick-media 多媒体处理 https://github.com/liuyueyi/quick-media
liquibase 数据库版本管理 https://www.liquibase.com
jackson json/xml处理 https://www.jackson.com
ip2region ip地址 https://github.com/zoujingli/ip2region
websocket 长连接 https://docs.spring.io/spring/reference/web/websocket.html
sensitive-word 敏感词 https://github.com/houbb/sensitive-word
chatgpt chatgpt https://openai.com/blog/chatgpt
讯飞星火 讯飞星火大模型 https://www.xfyun.cn/doc/spark/Web.html

六、PmHub 教程

PmHub 高质量教程共 70+ 篇,从中整理出 10 篇,供大家免费学习。

七、环境搭建

开发工具

工具 说明 官网
IDEA java开发工具 https://www.jetbrains.com
visualstudio web开发工具 https://code.visualstudio.com/
Chrome 浏览器 https://www.google.com/intl/zh-CN/chrome
ScreenToGif gif录屏 https://www.screentogif.com
SniPaste 截图 https://www.snipaste.com
PicPick 图片处理工具 https://picpick.app
MarkText markdown编辑器 https://github.com/marktext/marktext
curl http终端请求 https://curl.se
Postman API接口调试 https://www.postman.com
draw.io 流程图、架构图绘制 https://www.diagrams.net/
Axure 原型图设计工具 https://www.axure.com
navicat 数据库连接工具 https://www.navicat.com
DBeaver 免费开源的数据库连接工具 https://dbeaver.io
iTerm2 mac终端 https://iterm2.com
windows terminal win终端 https://learn.microsoft.com/en-us/windows/terminal/install
SwitchHosts host管理 https://github.com/oldj/SwitchHosts/releases

开发环境

工具 版本 下载
jdk 1.8+ https://www.oracle.com/java/technologies/downloads/#java8
maven 3.4+ https://maven.apache.org/
mysql 5.7+/8.0+ https://www.mysql.com/downloads/
redis 5.0+ https://redis.io/download/
elasticsearch 8.0.0+ https://www.elastic.co/cn/downloads/elasticsearch
nginx 1.10+ https://nginx.org/en/download.html
rocketmq 5.0.4+ https://www.rabbitmq.com/news.html
ali-oss 3.15.1 https://help.aliyun.com/document_detail/31946.html
git 2.34.1 http://github.com/
docker 4.10.0+ https://docs.docker.com/desktop/
freessl https证书 https://freessl.cn/

搭建步骤

本地部署教程

本地开发环境手把手教程

云服务器部署教程

环境搭建 & 基于源码的部署教程

服务器docker启动教程

八、内置功能

内置功能我们使用了若依的框架,为什么要用若依,一来我们觉得基础的后台功能没有必要再重复造轮子,我们需要节省时间花力气在项目核心业务上,二来我们希望站在巨人的肩膀上,若依是后台系统中很优秀的框架,我们基于其做的二次开发,相信也能再创辉煌!

  1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
  2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
  3. 岗位管理:配置系统用户所属担任职务。
  4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
  5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  7. 参数管理:对系统动态配置常用参数。
  8. 通知公告:系统通知公告信息发布维护。
  9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  10. 登录日志:系统登录日志记录查询包含登录异常。
  11. 在线用户:当前系统中活跃用户状态监控。
  12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
  14. 系统接口:根据业务代码自动生成相关的api接口文档。
  15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  16. 缓存监控:对系统的缓存信息查询,命令统计等。
  17. 在线构建器:拖动表单元素生成相应的HTML代码。
  18. 连接池监视:监视当前系统数据库连接池状态,可进行分析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 趋势图

Star History Chart

十二、公众号

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

苍何微信公众号

十三、许可证

MIT License (MIT)


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(苍何、沉默王二)

pmhub's People

Contributors

freestylefly avatar itwanger avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.