You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

254 lines
9.9 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
4 years ago
  1. 
  2. <div align=center>
  3. <img src="http://qmplusimg.henrongyi.top/gvalogo.jpg" width=300" height="300" />
  4. </div>
  5. <div align=center>
  6. <img src="https://img.shields.io/badge/golang-1.12-blue"/>
  7. <img src="https://img.shields.io/badge/gin-1.4.0-lightBlue"/>
  8. <img src="https://img.shields.io/badge/vue-2.6.10-brightgreen"/>
  9. <img src="https://img.shields.io/badge/element--ui-2.12.0-green"/>
  10. <img src="https://img.shields.io/badge/gorm-1.9.10-red"/>
  11. </div>
  12. English | [简体中文](./README-zh_CN.md)
  13. # Project Guidelines
  14. [Online Documentation](http://doc.henrongyi.top/)
  15. - Web UI Framework:[element-ui](https://github.com/ElemeFE/element)
  16. - Server Framework:[gin](https://github.com/gin-gonic/gin)
  17. ## 1. Basic Introduction
  18. ### 1.1 Project Introduction
  19. [Online Demo](http://qmplus.henrongyi.top/)
  20. > Gin-vue-admin is a full-stack (frontend and backend separation) framework designed for management system.
  21. > It integrates multiple functions, such as JWT authentication, dynamic routing, dynamic menu, casbin authentication, form generator, code generator, etc. So that you can focus more time on your business Requirements.
  22. Hi! Thank you for choosing gin-vue-admin.
  23. Gin-vue-admin is a full-stack (frontend and backend separation) framework for developers, designers and product managers.
  24. We are excited that you are interested in contributing to gin-vue-admin. Before submitting your contribution though, please make sure to take a moment and read through the following guidelines.
  25. ### 1.2 Contributing Guide
  26. #### 1.2.1 Issue Guidelines
  27. - Issues are exclusively for bug reports, feature requests and design-related topics. Other questions may be closed directly. If any questions come up when you are using Element, please hit [Gitter](https://gitter.im/element-en/Lobby) for help.
  28. - Before submitting an issue, please check if similar problems have already been issued.
  29. #### 1.2.2 Pull Request Guidelines
  30. - Fork this repository to your own account. Do not create branches here.
  31. - Commit info should be formatted as `[File Name]: Info about commit.` (e.g. `README.md: Fix xxx bug`)
  32. - <font color=red>Make sure PRs are created to `develop` branch instead of `master` branch.</font>
  33. - If your PR fixes a bug, please provide a description about the related bug.
  34. - Merging a PR takes two maintainers: one approves the changes after reviewing, and then the other reviews and merges.
  35. ### 1.3 Version list
  36. - master: 2.0 dev code, for prod
  37. - develop: 2.0 dev code, for test
  38. - [gin-vue-admin_v2.0_dev](https://github.com/flipped-aurora/gin-vue-admin/tree/gin-vue-admin_v2_dev) (v2.0 is no longer compatible with v1.0)
  39. - [gin-vue-admin_v1.0_stable](https://github.com/flipped-aurora/gin-vue-admin/tree/gin-vue-admin_v1_stable) (v1.0 is kept up to date and maintained)
  40. - [gin-vue-admin_v1.0_dev](https://github.com/flipped-aurora/gin-vue-admin/tree/gin-vue-admin_v1_dev) (v1.0 is kept up to date and maintained)
  41. ## 2. Getting started
  42. ```
  43. - node version > v8.6.0
  44. - golang version >= v1.11
  45. - IDE recommendation: Goland
  46. - After you clone the project, use the scripts in directory db to create your own database.
  47. - We recommend you to apply for your own cloud service in QINIU. Replace the public key, private key, warehouse name and default url address with your own, so as not to mess up the test database.
  48. ```
  49. ### 2.1 Web
  50. ```bash
  51. # clone the project
  52. git clone https://github.com/piexlmax/gin-vue-admin.git
  53. # enter the project directory
  54. cd web
  55. # install dependency
  56. npm install
  57. # develop
  58. npm run serve
  59. ```
  60. ### 2.2 Server
  61. ```bash
  62. # using go.mod
  63. # install go modules
  64. go list (go mod tidy)
  65. # build the server
  66. go build
  67. ```
  68. ### 2.3 API docs auto-generation using swagger
  69. #### 2.3.1 install swagger
  70. ##### (1) Using VPN or outside mainland China
  71. ````
  72. go get -u github.com/swaggo/swag/cmd/swag
  73. ````
  74. ##### (2) In mainland China
  75. In mainland China, access to go.org/x is prohibited,we recommend `gopm`
  76. ````bash
  77. # install gopm
  78. go get -v -u github.com/gpmgo/gopm
  79. # get swag
  80. gopm get -g -v github.com/swaggo/swag/cmd/swag
  81. # cd GOPATH/src/github.com/swaggo/swag/cmd/swag
  82. go install
  83. ````
  84. #### 2.3.2 API docs generation
  85. ````
  86. cd server
  87. swag init
  88. ````
  89. After executing the above command,`docs` will show in `server/`,then open your browser, jump into `http://localhost:8888/swagger/index.html` to see the swagger APIs.
  90. ## 3. Technical selection
  91. - Frontend: using `Element-UI` based on vue,to code the page.
  92. - Backend: using `Gin` to quickly build basic RESTful API. `Gin` is a web framework written in Go (Golang).
  93. - DB: `MySql`(5.6.44),using `gorm` to implement data manipulation, added support for SQLite databases.
  94. - Cache: using `Redis` to implement the recording of the JWT token of the currently active user and implement the multi-login restriction.
  95. - API: using Swagger to auto generate APIs docs。
  96. - Config: using `fsnotify` and `viper` to implement `yaml` config file。
  97. - Log: using `go-logging` record logs。
  98. ## 4. Project Architecture
  99. ![Architecture diagram](./docs/gin-vue-admin.png)
  100. ```
  101. ├─server (backend)
  102. │ ├─api (API entrance)
  103. │ ├─config (config file)
  104. │ ├─core (core code)
  105. │ ├─db (db scripts)
  106. │ ├─docs (swagger APIs docs)
  107. │ ├─global (global objet)
  108. │ ├─initialiaze (initialiazation)
  109. │ ├─middleware (middle ware)
  110. │ ├─model (model and services)
  111. │ ├─resource (resources, such as static pages, templates)
  112. │ ├─router (routers)
  113. │ ├─service (services)
  114. │ └─utils (common utilities)
  115. └─web (frontend)
  116. ├─public (deploy templates)
  117. └─src (source code)
  118. ├─api (frontend APIs)
  119. ├─assets (static files)
  120. ├─components(components)
  121. ├─router (frontend routers)
  122. ├─store (vuex state management)
  123. ├─style (common styles)
  124. ├─utils (frontend common utilitie)
  125. └─view (pages)
  126. ```
  127. ## 5. Features
  128. - Authority management: Authority management based on `jwt` and `casbin`.
  129. - File upload & download: File upload operation based on Qiniu Cloud (In order to make it easier for everyone to test, I have provided various important tokens of my Qiniu test number, and I urge you not to make things a mess).
  130. - Pagination Encapsulation:The frontend uses mixins to encapsulate paging, and the paging method can call mixins
  131. - User management: The system administrator assigns user roles and role permissions.
  132. - Role management: Create the main object of permission control, and then assign different API permissions and menu permissions to the role.
  133. - Menu management: User dynamic menu configuration implementation, assigning different menus to different roles.
  134. - API management: Different users can call different API permissions.
  135. - Configuration management: The configuration file can be modified in the web page (the test environment does not provide this function).
  136. - Rich text editor: Embed MarkDown editor function.
  137. - Conditional search: Add an example of conditional search.
  138. - Restful example: You can see sample APIs in user management module.
  139. ```
  140. fontend code file: src\view\superAdmin\api\api.vue
  141. backend code file: model\dnModel\api.go
  142. ```
  143. - Multi-login restriction: Change `userMultipoint` to true in `system` in `config.yaml` (You need to configure redis and redis parameters yourself. During the test period, please report in time if there is a bug).
  144. - Upload file by chunk:Provides examples of file upload and large file upload by chunk.
  145. - Form Builder:With the help of [@form-generator](https://github.com/JakHuang/form-generator).
  146. - Code generator: Providing backend with basic logic and simple curd code generator.
  147. ## 6. To-do list
  148. - [ ] upload & export Excel
  149. - [ ] e-chart
  150. - [ ] workflow, task transfer function
  151. - [ ] frontend independent mode, mock
  152. ## 7. Knowledge base
  153. ### 7.1 Team blog
  154. > https://www.yuque.com/flipped-aurora
  155. >
  156. >There are video courses about frontend framework in our blo. If you think the project is helpful to you, you can add my personal WeChat:shouzi_1994,your comments is welcomed。
  157. ### 7.2 Video courses
  158. (1) Development environment course
  159. > Bilibili:https://www.bilibili.com/video/BV1Fg4y187Bw/ (coming soon)
  160. (2) Template course
  161. > Bilibili:https://www.bilibili.com/video/BV1Fg4y187Bw/ (coming soon)
  162. (3) Golang basic course (coming soon)
  163. > https://space.bilibili.com/322210472/channel/detail?cid=108884
  164. ## 8. Contacts
  165. ### 8.1 Groups
  166. | QQ group |
  167. | :---: |
  168. | <img src="http://qmplusimg.henrongyi.top/qq.jpg" width="180"/> |
  169. ### QQ group: 622360840
  170. ### Wechat group: add anyone above, comment "加入gin-vue-admin交流群"
  171. ### 8.2 Team members
  172. | Jiang | Yin | Yan | Du | Yin | Song |
  173. | :---: | :---: | :---: | :---: | :---: | :---: |
  174. | <img width="150" src="http://qmplusimg.henrongyi.top/qrjjz.png"> | <img width="150" src="http://qmplusimg.henrongyi.top/qryx.png"> | <img width="150" src="http://qmplusimg.henrongyi.top/qryr.png"> | <img width="150" src="http://qmplusimg.henrongyi.top/qrdjl.png"> | <img width="150" src="http://qmplusimg.henrongyi.top/qrygl.png"> | <img width="150" src="http://qmplusimg.henrongyi.top/qrsong.png"> |
  175. | Nick name | Project position | First name |
  176. | ---- | ---- | ---- |
  177. | [@piexlmax](https://github.com/piexlmax) | Project sponsor | Jiang |
  178. | [@granty1](https://github.com/granty1) | Backend developer | Yin |
  179. | [@Ruio9244](https://github.com/Ruio9244) | Full-stack developer | Yan |
  180. | [@1319612909](https://github.com/1319612909) | UI developer | Du |
  181. | [@krank666](https://github.com/krank666) | Frontend developer | Yin |
  182. | [@chen-chen-up](https://github.com/chen-chen-up) | Novice developer | Song |
  183. ## 9. Donate
  184. If you find this project useful, you can buy author a glass of juice :tropical_drink: