
Beehive 是一个项目管理系统。参考于 Teambetion 、PearProject,实现部分功能。
这是一个 Vue+Node.js 的 js 全栈项目。基于 RBAC 模型做权限控制,动态配置菜单,前端实现页面元素级别的权限控制。通过 WebSocket 实现站内信功能,任务看板中,实现更新同步推送。一旦其他项目成员有对我们当前查看的项目任务做任何的操作,页面都将立即同步更新,并向此任务的所有参与者(除了操作者)发送消息通知。注册和找回密码需要通过邮箱验证码验证,可以通过 github 授权登陆(不是很稳定)。
Node.js 框架选用的是 Egg.js ,配合 sequelize,自己写了一个小工具。可以通过填写表字段的配置,执行 npm run generator-entity 自动生成一整套文件,包括 Swagger 、数据校验 validate 、Sequelize 需要的 model 、controller 、service 、router 。并自动创建数据库表,包括每个字段的类型、长度、是否能为空、默认值、注释、索引、甚至是外键都能搞定。因为加了权限控制,所以还要到前端的资源管理中添加一下新增的资源,并在角色中点选分配一下,就完成了一张表的 CRUD 了,包括新增、修改、详情、批量删除、分页列表。当然这还是有很多可以优化的空间的,但也基本够用了。为了优化鉴权消耗,以及满足 WebSocket 的可靠性设计需要,系统引入 Redis 做缓存。
密码是加盐存储的,且在传输过程中使用了 RSA 做了非对称加密。Jwt 认证使用 Access Token + Refresh Token,配合黑名单。
预发布环境:超级管理员账号:test-super,密码:test-super123预发布环境地址:beehives.imfdj.top
预发布环境:普通用户账号:test-user,密码:test-user123
生产环境:普通用户账号:test-user,密码:test-user123生产环境地址:beehive.imfdj.top
前端:Vue2 全家桶 + Element-ui + Axios + Vue-socket.io + Sass前端项目 github 地址
后端:Egg.js + Sequelize + Jwt + Mysql + Redis + Socket + Swagger后端项目 github 地址
如果对您有帮助,您可以点右上角 "Star" 支持一下 谢谢! ^_^
或者您可以 "follow" 一下,我会不断开源更多的有趣的项目。如:Vue3 + NestJS + TypeScript
如有问题请直接在 Issues 中提,或者您发现问题并有非常好的解决方案,欢迎 PR
登录、注册 -- 完成
github 授权登录 -- 完成
找回密码 -- 完成
滑块验证 -- 完成
邮箱验证 -- 完成
动态首页 -- 完成
个人设置 -- 完成
用户管理 -- 完成
角色管理 -- 完成
菜单管理 -- 完成
资源管理 -- 完成
操作日志 -- 完成
动态菜单 -- 完成
部门管理 -- 完成
项目列表 -- 完成
任务看板 -- 完成
任务列表 -- 完成
项目文件 -- 完成
项目概览 -- 完成
项目成员 -- 完成
项目邀请 -- 完成
项目设置 -- 完成
项目回收站 -- 完成
任务筛选 -- 完成
任务详情 -- 完成
任务标签 -- 完成
任务参与者 -- 完成
任务动态 -- 完成
任务工时 -- 完成
任务关联文件 -- 完成
任务更新即时同步 -- 完成
公开项目的业务权限控制(非项目成员不可编辑项目) -- 完成
项目模板 -- 完成
消息提醒 -- 完成
工作台 -- 完成
站内信 -- 完成
页面元素权限控制 -- 完成
项目版本 -- 待开发
项目日程 -- 待开发
Node.js >= v10; Mysql >= 5.7; Redis >= 5.0;
git clone https://github.com/Imfdj/egg-beehive.git cd egg-beehive npm install 或 yarn(推荐) 将 database 目录下的 egg-beehive-dev.sql 和 egg-beehive-test.sql 导入 mysql (推荐 navicat )。 在 config 目录下的 config.local.js 和 config.unittest.js 中的 exports.sequelize 、exports.redis 、exports.io.redis 下填入 Mysql 和 Redis 的配置参数 npm run dev npm run test-local (单元测试) 在 generator 文件夹中的 config.js 文件中定义各个字段的描述,完成后执行 npm run generator-entity 。 里面还有很多 config-*.js 的配置文件可供参考。也可以在 template 文件夹中自定义各个文件的模板。 // 这是一个字段的描述模板 fieldsItemExample: { name: 'xx_id', type: 'INTEGER', length: 11, min: 1, max: 1, required: true, description: '这里是描述', // 供 swagger 使用 primaryKey: false, // 是否为主键 unique: false, // 是否唯一 allowNull: false, // 是否允许为空 autoIncrement: false, // 是否自增 defaultValue: '', // 数据库表中字段的默认值 comment: '外键', // 数据库表中字段的描述 references: { // 外键设置 model: 'xxxs', // 外键关联表 key: 'id', // 外键字段名 }, onUpdate: 'NO ACTION', // 外键更新约束 CASCADE RESTRICT SET NULL SET DEFAULT NO ACTION onDelete: 'NO ACTION', // 外键删除约束 CASCADE RESTRICT SET NULL SET DEFAULT NO ACTION } git clone https://github.com/Imfdj/vue-beehive.git cd vue-beehive npm install 或 yarn(推荐) npm run serve Copyright (c) 2021 Imfdj
1 MX123 Sep 13, 2021 666 |
2 binbin0915 Sep 13, 2021 学习一下先~~~~ |
3 dany813 Sep 13, 2021 老哥 数据库的图,哪个软件画的 |
4 kylix Sep 13, 2021 快到收藏夹里来~~~ |
5 yunyuyuan Sep 13, 2021 看起来挺牛逼的,老哥一个人做的?感觉可以做 to B 了,类似 tower |
7 xuxuxu123 Sep 13, 2021 云效 2020 版?部分界面真的很像 |
9 apple2026 Sep 13, 2021 移动端可以不考虑适配一下么。后面很多客户办公都会用 pad,手机。 |
11 ccong Sep 13, 2021 老哥动手能力好强,github 关注了 |
13 lichao Sep 13, 2021 楼主有 Rails 背景? |
14 dengshen Sep 13, 2021 via iPhone nestjs 好评 |
17 podel Sep 13, 2021 妈呀 NB 吖。 咋直接就全开源了呢。这种不是可以商业化的么。 |
18 sinalvee Sep 13, 2021 6666,项目和任务看上去很像 TB |
21 hb1988 Sep 13, 2021 厉害,又是一位动手能力值得借鉴的老哥(滑稽) |
22 Foryou920 Sep 13, 2021 太强了,star 一个 |
24 star7th Sep 13, 2021 支持一下 |
26 GG668v26Fd55CP5W Sep 13, 2021 via iPhone 前端为什么没有用 vue3 ? |
30 StrongNoodles Sep 13, 2021 收藏夹吃灰=。= |
32 GG668v26Fd55CP5W Sep 13, 2021 @Imfdj 原来如此,那这项目也做了很长时间,不容易。 |
33 cking Sep 13, 2021 star 了 牛逼 就这行动力 牛逼 |
34 Imfdj OP @StrongNoodles =。= 让他吃~~ |
36 GG668v26Fd55CP5W Sep 13, 2021 @Imfdj 没有,只有我在个人的小项目用,公司还在用 jQuery 。。。 |
39 longgediyi999 Sep 13, 2021 via iPhone 整挺好 |
40 Imfdj OP |
41 lovelyxiaod Sep 15, 2021 鲁班七号直呼牛逼。 |