Beehive
preface
Beehive is a project management system. Refer to Teambetion and PearProject to realize some functions.
This is a Vue+Node.js js full stack project. Based on RBAC model to do permission control, dynamic configuration menu, front-end page element level of permission control. Through WebSocket to achieve the station letter function, task kanban, update synchronization push. As soon as another project member does anything to the project task we are currently looking at, the page is updated synchronously and a message is sent to all participants of the task (except the worker). Registration and password retrieval need to be verified by email verification code, you can log in through Github authorization (not very stable).
The Node.js framework uses egg.js and sequelize to write its own widget. You can fill in the table fields and run the NPM Run generator-Entity command to automatically generate a complete set of files, including Swagger, data validate, model, Controller, Service, and Router required by Sequelize. The database tables are automatically created, including the type, length, nullability, default, comments, indexes, and even foreign keys for each field. Because of the added permission control, so also to the front end of the resource management to add a new resource, and in the role of the allocation click, complete a table CRUD, including new, modify, details, batch delete, paging list. There’s still a lot of room to optimize, but it’s almost enough. In order to optimize authentication consumption and meet the reliability design requirements of WebSocket, Redis is used as cache.
The password is salted and encrypted asymmetrically using RSA during transmission. Jwt authentication uses the Access Token and Refresh Token together with the blacklist.
Results demonstrate
Pre-release environment: Super administrator Account: test-super, password: test-super123 Pre-release environment address: beehives.imfdj.top
Pre-release environment: Common user Account: test-user, password: test-user123
Production environment: common user Account: test-user, password: test-user123 Production environment ADDRESS: beehive.imfdj.top
Technology stack
Front-end: Vue2 family bucket + element-UI + Axios + VUE-socket. IO + Sass Github address of front-end project
Js + Sequelize + Jwt + Mysql + Redis + Socket + Swagger Github address of back-end project
instructions
If it is helpful, you can click “Star” in the upper right corner to support it. Thank you! ^_^
Or you can “follow” and I will open source more interesting projects. For example: Vue3 + NestJS + TypeScript ✨
If you have any questions, please directly raise them in Issues, or if you find problems and have a good solution, please feel free to contact PR 👍
The target function
- Login, register — done
- Github Authorized login — done
- Retrieve the password — done
- Slider validation — done
- Mailbox verification – done
- Dynamic home page – Done
- Personal Settings — done
- User management – done
- Role management – Done
- Menu management – done
- Resource management – Done
- Operation log — Done
- Dynamic menu – Done
- Department management — done
- List of items — Done
- Task Kanban – Done
- Task list — Done
- Project file – Done
- Project Overview – Done
- Project member — Done
- Project invitation — Done
- Project setup – Done
- Project recycle bin — Done
- Task filtering — Done
- Task details — Done
- Task tag — Done
- Task participant – Done
- Task dynamics — Done
- Task time — done
- Task associated file — Done
- Instant synchronization of task updates — done
- Exposes business permission controls for projects (non-project members cannot edit projects) — done
- Project template – Done
- Message alert — done
- Workbench — Done
- Station message – done
- Page element permission control – done
- Project version – to be developed
- Project schedule – to be developed
Part of the screenshot
Back-end Egg project deployment
Operating environment:
Node.js >= v10; Mysql > = 5.7; Redis > = 5.0;
Git clone https://github.com/Imfdj/egg-beehive.git CD egg - beehive NPM install or yarn (recommended) Mysql > update database database with avicat Local. js and config.unittest.js in config directory, enter Mysql and redis configuration parameter NPM under exports.sequelize, exports.redis, exports.io Run dev NPM run test-localCopy the code
How to fast CRUD:
Define the description of each field in the config.js file in the Generator folder, and then run NPM run generator-Entity. There are also many config-*.js configuration files for reference. You can also customize templates for individual files in the template folder. FieldsItemExample: {name: 'xx_id', type: 'INTEGER', length: 11, min: 1, Max: 1, required: True, description: 'here is the description ', // for swagger to use primaryKey: false, // whether primaryKey unique: false, // whether unique allowNull: Int autoIncrement: false, int autoIncrement: false, int autoIncrement: false, int autoIncrement: false, int autoIncrement: false, int autoIncrement: false, int autoIncrement: false, int autoIncrement: false, int autoIncrement: false 'foreign key', / / and the description of the fields in database table references: {/ / foreign key set model: 'XXXS, / / foreign key link table key:' id ', / / foreign key field name}, onUpdate: 'NO ACTION', // CASCADE RESTRICT SET NULL SET DEFAULT NO ACTION onDelete: 'NO ACTION', // RESTRICT SET NULL SET DEFAULT NO ACTION}Copy the code
Front-end VUE project deployment
Git clone https://github.com/Imfdj/vue-beehive.git CD vue - beehive NPM install or yarn (recommended) NPM run serveCopy the code
Functional design
The back-end design
Database design
License
MIT
Copyright (c) 2021 Imfdj