├── .gitignore ├── docs └── images │ ├── sort.png │ ├── invite.png │ ├── pwa_icon.png │ ├── todolist.png │ ├── uml_list.png │ ├── change_pm.png │ ├── create_uml.png │ ├── no_product.png │ ├── operation.png │ ├── restfulapi.png │ ├── reviewlog.png │ ├── risk_list.png │ ├── task_list.png │ ├── change_avatar.png │ ├── change_role.png │ ├── create_defect.png │ ├── create_risk.png │ ├── create_task.png │ ├── defect_commit.png │ ├── defect_list.png │ ├── feature_list.png │ ├── function_list.png │ ├── homepage_bg.png │ ├── product_list.png │ ├── testcase_list.png │ ├── component_list.png │ ├── create_document.png │ ├── create_feature.png │ ├── create_function.png │ ├── create_product.png │ ├── create_testcase.png │ ├── delete_product.png │ ├── iteration_list.png │ ├── alipay-unlimited.png │ ├── create_component.png │ ├── create_iteration.png │ ├── create_requirement.png │ ├── internetproperties.png │ ├── requirement_list.png │ ├── toolmaker-v1.1.0.png │ ├── pwa_requirement_list.png │ ├── wechatpay-unlimited.png │ └── pwa_add_to_main_screen.png ├── README.english.md ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # system ignore 2 | .DS_Store 3 | Thumbs.db 4 | *.exe 5 | *.exe~ -------------------------------------------------------------------------------- /docs/images/sort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/sort.png -------------------------------------------------------------------------------- /docs/images/invite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/invite.png -------------------------------------------------------------------------------- /docs/images/pwa_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/pwa_icon.png -------------------------------------------------------------------------------- /docs/images/todolist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/todolist.png -------------------------------------------------------------------------------- /docs/images/uml_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/uml_list.png -------------------------------------------------------------------------------- /docs/images/change_pm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/change_pm.png -------------------------------------------------------------------------------- /docs/images/create_uml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_uml.png -------------------------------------------------------------------------------- /docs/images/no_product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/no_product.png -------------------------------------------------------------------------------- /docs/images/operation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/operation.png -------------------------------------------------------------------------------- /docs/images/restfulapi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/restfulapi.png -------------------------------------------------------------------------------- /docs/images/reviewlog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/reviewlog.png -------------------------------------------------------------------------------- /docs/images/risk_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/risk_list.png -------------------------------------------------------------------------------- /docs/images/task_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/task_list.png -------------------------------------------------------------------------------- /docs/images/change_avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/change_avatar.png -------------------------------------------------------------------------------- /docs/images/change_role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/change_role.png -------------------------------------------------------------------------------- /docs/images/create_defect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_defect.png -------------------------------------------------------------------------------- /docs/images/create_risk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_risk.png -------------------------------------------------------------------------------- /docs/images/create_task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_task.png -------------------------------------------------------------------------------- /docs/images/defect_commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/defect_commit.png -------------------------------------------------------------------------------- /docs/images/defect_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/defect_list.png -------------------------------------------------------------------------------- /docs/images/feature_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/feature_list.png -------------------------------------------------------------------------------- /docs/images/function_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/function_list.png -------------------------------------------------------------------------------- /docs/images/homepage_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/homepage_bg.png -------------------------------------------------------------------------------- /docs/images/product_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/product_list.png -------------------------------------------------------------------------------- /docs/images/testcase_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/testcase_list.png -------------------------------------------------------------------------------- /docs/images/component_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/component_list.png -------------------------------------------------------------------------------- /docs/images/create_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_document.png -------------------------------------------------------------------------------- /docs/images/create_feature.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_feature.png -------------------------------------------------------------------------------- /docs/images/create_function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_function.png -------------------------------------------------------------------------------- /docs/images/create_product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_product.png -------------------------------------------------------------------------------- /docs/images/create_testcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_testcase.png -------------------------------------------------------------------------------- /docs/images/delete_product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/delete_product.png -------------------------------------------------------------------------------- /docs/images/iteration_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/iteration_list.png -------------------------------------------------------------------------------- /docs/images/alipay-unlimited.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/alipay-unlimited.png -------------------------------------------------------------------------------- /docs/images/create_component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_component.png -------------------------------------------------------------------------------- /docs/images/create_iteration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_iteration.png -------------------------------------------------------------------------------- /docs/images/create_requirement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/create_requirement.png -------------------------------------------------------------------------------- /docs/images/internetproperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/internetproperties.png -------------------------------------------------------------------------------- /docs/images/requirement_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/requirement_list.png -------------------------------------------------------------------------------- /docs/images/toolmaker-v1.1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/toolmaker-v1.1.0.png -------------------------------------------------------------------------------- /docs/images/pwa_requirement_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/pwa_requirement_list.png -------------------------------------------------------------------------------- /docs/images/wechatpay-unlimited.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/wechatpay-unlimited.png -------------------------------------------------------------------------------- /docs/images/pwa_add_to_main_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/phcp-tech/docs-toolmaker/HEAD/docs/images/pwa_add_to_main_screen.png -------------------------------------------------------------------------------- /README.english.md: -------------------------------------------------------------------------------- 1 | English | [简体中文](./README.md) 2 | 3 | # Catalog 4 | ## Why Toolmaker? 5 | Toolmaker is a light-weight, integrated Software Development Life Cycle (SDLC) platform that architected and build by myself, features including requirement analysis, software design, test case, bug tracking etc. 6 | ## Technology Stack 7 | Toolmaker technology stack as follows: 8 | #### Front-end 9 | #### Back-end 10 | 11 | ## Requirement Management 12 | ## Design Management 13 | ## Test Management 14 | ## Product Management 15 | ## User Management 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright(C) 2020-2026 PHCP Technologies. All rights reserved. 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 简体中文 | [English](./README.english.md) 2 | 3 | # 目录 4 | * [一、Toolmaker是什么?](#1) 5 | * [二、产品领先之处](#2) 6 | * [三、运行环境](#3) 7 | * [四、特性列表](#4) 8 | * [五、使用手册](#5) 9 | * [六、版本与价格](#6) 10 | * [七、定制开发](#7) 11 | * [八、联系方式](#8) 12 | * [九、致谢](#10) 13 | 14 | ##

一、Toolmaker是什么

15 | ### 1.1 Toolmaker是什么? 16 | * Toolmaker是一款轻量级的软件开发生命周期管理SaaS平台,主要面向中小互联网软件企业及开发团队,是制造软件工具的工具。 17 | * Toolmaker依据软件工程理论开发,提供诸如产品管理、需求分析、系统设计、测试管理、缺陷跟踪、风险管理、任务管理等软件开发全流程功能,支持PC端、移动端显示。 18 | 19 | ### 1.2 解决的问题 20 | * 普遍缺乏符合软件工程定义的软件开发流程 21 | * 项目管理过程碎片化 22 | * 项目管理工具阶段化、多样化 23 | * 项目文档交付物杂乱 24 | * 经验与知识不能有效传承 25 | 26 | ### 1.3 能够提供 27 | * 基于软件工程定义的开发流程 28 | * 连续统一的软件开发流程管理,从最初的原始需求收集到最后的产品维护终结 29 | * 摒弃各个阶段独立的管理工具,提供一站式平台操作 30 | * 不再需要各种格式的文档交付物,全部数据保存在平台中 31 | * SaaS软件,注册即可使用,无需安装和维护 32 | * 人性化、简洁的操作界面,使用一次即上手 33 | 34 | ### 1.4 适用范围 35 | * 中小互联网企业的软件开发流程管理 36 | * 大中小企业IT部门的软件开发流程管理 37 | 38 | ### 1.5 口号 39 | * Toolmaker不关注你开发什么,而关注你如何开发! 40 | * Toolmaker doesn't focus on what you develop,but on how you develop! 41 | 42 | ### 1.6 名字缘起 43 | Toolmaker这个名字,受到电影《星球大战前传II--克隆人的进攻》一句台词的启发,其中一个情节是机器人C-3PO误入帝国的机器人士兵制造工厂,张口说道“Machines making machines. Huh! How perverse.” 是的,Toolmaker making (software) tools,Toolmaker是一个软件工具的制造者,缘起如是。 44 | 45 | ### 1.7 预览地址 46 | * 登录[https://toolmaker.io](https://toolmaker.io),使用“产品演示”功能,会以guest用户登录,该用户可以查看一个演示产品“HR Management System”的所有内容,但不能创建任何内容。 47 | * 注册新用户,创建产品,开始一个新产品的软件开发过程。 48 | 49 | ### 1.8 宣传图片 50 | ![Preivew](docs/images/toolmaker-v1.1.0.png) 51 | 52 | ##

二、产品领先之处

53 | #### 2.1 思想领先 54 | * 对软件开发过程与方法的深刻理解 55 | * 基于完整统一的软件开发过程领域模型进行设计 56 | 57 | #### 2.2 技术领先 58 | * 前端采用Material Design设计风格,支持多端显示:PC,Laptop,iPad,iPhone,Android,支持PWA 59 | * 后端微服务架构运行于AWS云环境,使用Lambda Serverless、CloudFront、RDS等技术,自动扩展不断增加的业务量 60 | 61 | ##

三、运行环境

62 | 支持的终端类型:大屏幕,PC,笔记本,移动端Android,iPhone,iPAD 63 | #### 3.1 Windows PC浏览器 64 | * 支持Chrome,Firefox,Edge, Opera, QQ, UC, 猎豹。不支持IE11及以下版本浏览器。 65 | 66 | ![Preivew](docs/images/homepage_bg.png) 67 | * Edge浏览器会出现TLS协议的情况,需要修改,执行Settings->搜索"Internet Options"或者"Internet Properties"->Advanced->Security->勾选"Use TLS 1.0","Use TLS 1.1","Use TLS 1.2",见下图: 68 | 69 | ![Preivew](docs/images/internetproperties.png) 70 | 71 | #### 3.2 MacOS浏览器 72 | * 支持Safari 73 | #### 3.3 移动端浏览器 74 | * Android手机浏览器支持:Chrome,Firefox,Edge,QQ, UC,微信内部浏览器。不支持Opera,猎豹浏览器。 75 | 76 | * iPhone手机浏览器:Safari 77 | * iPad浏览器:Safari 78 | 79 | #### 3.4 PWA模式 80 | * 支持PWA模式,浏览器支持Chrome,Firefox,Edge。以Chrome浏览器为例: 81 | 手机下载Chrome浏览器最新版本,打开https://toolmaker.io 网站,在浏览器操作菜单中主动选择“添加到主屏幕”,此时在手机屏幕生成一个APP图标,就可以转变为一个类似APP的应用,效果如最右图: 82 | 83 | ![Preivew](docs/images/pwa_add_to_main_screen.png) ![Preivew](docs/images/pwa_icon.png) 84 | ![Preivew](docs/images/pwa_requirement_list.png) 85 | 86 | ##

四、特性列表

87 | ### 4.1 用户管理 88 | * 通过电子邮箱注册用户 89 | * 基于开发角色(产品经理/设计/开发/测试工程师)的权限管理 90 | ### 4.2 产品管理 91 | * 多产品管理,各个产品内容完全隔离,独立开发,互不干扰 92 | * 用户可以加入/退出产品,在加入的产品中切换,执行不同的开发角色和开发任务 93 | ### 4.3 开发迭代管理 94 | * 根据产品里程碑的要求,通过开发迭代,进行产品开发计划管理。 95 | ### 4.4 特性管理 96 | * 基于产品重要特性的分类管理,是后期需求分析和系统设计的统一基础 97 | ### 4.5 需求管理 98 | * 基于UseCase的需求写作模板,特性-需求-测试用例跟踪列表 99 | ### 4.6 组件设计 100 | * 系统架构组件设计与描述 101 | ### 4.7 功能设计 102 | * 模块功能设计与描述 103 | ### 4.8 在线UML设计 104 | * 支持PlantUML在线设计,支持4+1模型,支持10种UML图 105 | ### 4.9 RESTful接口展示功能 106 | 107 | ### 4.10 测试用例管理 108 | * 对应每一个需求编写测试用例,复用UseCase分析结果 109 | ### 4.11 缺陷跟踪 110 | * 完整的缺陷处理流程,在开发和测试之间无碍流转 111 | ### 4.12 风险管理 112 | * 基于预防措施和应急计划的风险管理,风险发生后自动生成任务处理 113 | ### 4.13 任务管理 114 | * Todo List任务管理,拖拽改变任务状态,操作简单 115 | ### 4.14 自定义文档 116 | * 可以自己定义书写任意格式,内容的文档。 117 | ### 4.15 评论,操作记录,附件上载 118 | * 每一个特性,需求,缺陷等资源都支持多人评论,操作记录显示,上载附件。 119 | 120 | ##

五、使用手册

121 | ### 5.1 用户注册与登录 122 | * 填写Email进行注册。使用邮箱进行验证,点击获取验证码,系统会把注册验证码发送到用户填写的邮箱中。用户登录邮箱获取验证码,填写用户名称、验证码和密码后进行注册; 123 | * 注册成功后,用户即可以登录使用系统。 124 | 125 | ### 5.2 创建新产品 126 | * 用户第一次登录系统后,根据提示进行创建产品,创建完成后点击切换至该产品,即可以邀请成员,开始创建特性和需求; 127 | * “个人版本”一个用户最多可以创建1个产品; 128 | 129 | ![Preivew](docs/images/no_product.png) 130 | 131 | * 在任何时刻,用户可以点击顶部菜单“我的产品”进行查看目前加入的产品,或者创建新的产品。 132 | 133 | ![Preivew](docs/images/create_product.png) 134 | 135 | ### 5.3 邀请用户加入产品 136 | * 产品创建后,只有产品经理(默认为产品创建者)才能邀请其他用户加入产品:点击左侧菜单->设置->成员,一次可以增加多个成员,并分配相应的角色。“个人版本”一个产品最多可以邀请包括产品经理在内5个成员。 137 | 138 | ![Preivew](docs/images/invite.png) 139 | 140 | * 产品经理可以修改现有成员的角色,或者可以移除某个成员,同时移除该成员在产品内的所有权限。如果是非产品经理角色的成员登录系统,则可以在这个界面主动退出某个产品。 141 | 142 | ![Preivew](docs/images/change_role.png) 143 | 144 | ### 5.4 角色权限定义 145 | 目前定义四种角色,分别是: 146 | * 产品经理(ProductManager):权限包括创建产品与产品管理,邀请成员与成员管理,创建特性与特性管理,创建需求与需求管理,测试管理等所有权限; 147 | * 设计工程师(DesignEngineer):权限包括创建产品,创建特性与特性管理,创建需求与需求管理,任务管理,测试管理等; 148 | * 开发工程师(DevelopEngineer):权限包括创建产品,任务,风险,缺陷; 149 | * 测试工程师(TestEngineer):权限包括创建产品,任务,风险,测试用例,缺陷; 150 | * 访客(Guest):能读取产品所有数据,可以创建产品,可以修改用户资料,但不能修改和新建其他资源。 151 | 152 | ### 5.5 迭代管理 153 | 只有产品经理和设计工程师才有权限创建和管理迭代。“个人版本”每个产品最多可以创建100个迭代。 154 | #### 5.5.1 创建迭代 155 | 点击左侧菜单->设置->迭代,打开迭代列表,点击列表上方的“+”号,填写名称,迭代类型,起始结束时间点,指定迭代经理,填写迭代内容(开发计划,测试计划,发布计划等)进行创建; 156 | ![Preivew](docs/images/create_iteration.png) 157 | 158 | #### 5.5.2 迭代列表 159 | * 每列数据从左到右依次是:迭代名称,创建者,经理,操作菜单。 160 | 161 | ![Preivew](docs/images/iteration_list.png) 162 | 163 | * 可以按照迭代名称查询 164 | * 可以按照最近修改日期,最近创建日期,迭代名称排序 165 | 166 | #### 5.5.3 迭代操作 167 | * 编辑迭代 168 | * 复制迭代 169 | * 删除迭代。 170 | * 对迭代进行评论,查看评论 171 | * 查询迭代的操作记录 172 | * 上载附件 173 | 174 | ![Preivew](docs/images/reviewlog.png) 175 | 176 | ### 5.6 特性管理 177 | 只有产品经理和设计工程师才有权限创建和管理特性。“个人版本”每个产品最多可以创建20个特性。 178 | #### 5.6.1 创建特性 179 | 点击左侧菜单->需求管理->特性,打开特性列表,点击列表上方的“+”号,填写名称,简介,分类,重要性,可获得性,客户价值,特性增强,依赖关系等选项进行创建;可以自定义Tag进行标识; 180 | ![Preivew](docs/images/create_feature.png) 181 | 182 | #### 5.6.2 特性列表 183 | * 每列数据从左到右依次是:特性编码OID,名称,自定义Tag,重要性,状态,操作菜单。 184 | 185 | ![Preivew](docs/images/feature_list.png) 186 | 187 | * 可以按照OID和特性名称查询 188 | * 可以按照最近修改日期,最近创建日期,特性名称排序 189 | * 可以按照状态过滤。特性状态有:初始化,开发中,已冻结,已结束。 190 | 191 | ![Preivew](docs/images/sort.png) 192 | 193 | #### 5.6.3 特性操作 194 | * 编辑特性 195 | * 复制特性 196 | * 冻结/恢复特性 197 | * 删除特性。只有处于初始状态的特性才可以删除,删除的特性不能被恢复 198 | * 查询该特性下的需求列表 199 | * 对特性进行评论,查看评论 200 | * 查询特性的操作记录 201 | * 上载附件 202 | 203 | ![Preivew](docs/images/operation.png) 204 | ![Preivew](docs/images/reviewlog.png) 205 | 206 | ### 5.7 需求管理 207 | 只有产品经理和设计工程师才有权限创建和管理需求。“个人版本”每个特性最多可以创建30个需求。 208 | #### 5.7.1 创建需求 209 | 点击左侧菜单->需求管理->需求,打开需求列表,点击列表上方的“+”号,填写名称,简介,分类,重要性等内容进行创建;可以自定义Tag进行标识; 210 | 如果需求分类选择了“功能需求”,则需求按照UseCase格式进行描述,输入角色,触发条件,前置条件,后置条件,处理过程,分支流程等内容;如果分类选择了“非功能需求”,则按照一般格式进行描述。 211 | ![Preivew](docs/images/create_requirement.png) 212 | 213 | #### 5.7.2 需求列表 214 | * 每列数据从左到右依次是:需求编码OID,名称,自定义Tag,重要性,状态,操作菜单。 215 | * 可以按照OID和需求名称查询 216 | * 可以按照最近修改日期,最近创建日期,需求名称排序 217 | * 可以按照状态过滤。需求状态有:初始化,开发中,已冻结,已结束。 218 | 219 | ![Preivew](docs/images/requirement_list.png) 220 | 221 | #### 5.7.3 需求操作 222 | * 编辑需求 223 | * 复制需求 224 | * 冻结/恢复需求 225 | * 删除需求。只有处于初始状态的需求才可以删除,删除的需求不能被恢复 226 | * 查询该需求对应的特性信息,完成特性到需求的跟踪 227 | * 创建开发任务。可以把需求转化为任务,一个需求只能创建一个任务 228 | * 对需求进行评论,查看评论 229 | * 查询需求的操作记录 230 | * 上载附件 231 | 232 | 233 | ### 5.8 组件设计 234 | 只有产品经理和设计工程师才有权限创建和管理组件。“个人版本”每个产品最多可以创建20个组件。 235 | #### 5.8.1 创建组件 236 | 点击左侧菜单->设计管理->组件,打开组件列表,点击列表上方的“+”号,填写名称,简介,描述等内容进行创建;可以自定义Tag进行标识; 237 | 238 | ![Preivew](docs/images/create_component.png) 239 | 240 | #### 5.8.2 组件列表 241 | * 每列数据从左到右依次是:组件编码OID,名称,自定义Tag,操作菜单。 242 | * 可以按照OID和需求名称查询 243 | * 可以按照最近修改日期,最近创建日期,组件名称排序 244 | 245 | 246 | ![Preivew](docs/images/component_list.png) 247 | 248 | #### 5.8.3 组件操作 249 | * 编辑组件 250 | * 复制组件 251 | * 删除组件。删除的组件不能被恢复。 252 | 253 | ### 5.9 功能设计 254 | 只有产品经理和设计工程师才有权限创建和管理功能。“个人版本”每个产品最多可以创建200个功能。 255 | #### 5.9.1 创建功能 256 | 点击左侧菜单->设计管理->功能,打开功能列表,点击列表上方的“+”号,填写所属组件,名称,简介,功能输入,功能处理,功能输出等内容进行创建;可以自定义Tag进行标识; 257 | ![Preivew](docs/images/create_function.png) 258 | 259 | #### 5.9.2 功能列表 260 | * 每列数据从左到右依次是:功能编码OID,名称,自定义Tag,操作菜单。 261 | * 可以按照OID和需求名称查询 262 | * 可以按照最近修改日期,最近创建日期,功能名称排序 263 | 264 | ![Preivew](docs/images/function_list.png) 265 | 266 | #### 5.9.3 功能操作 267 | * 编辑功能 268 | * 复制功能 269 | * 删除功能。删除的功能不能被恢复。 270 | * 创建开发任务。可以把功能转化为任务,一个功能只能创建一个任务 271 | 272 | ### 5.10 在线UML 273 | 只有产品经理和设计工程师才有权限创建和管理UML。“个人版本”每个产品最多可以创建50个UML图。 274 | 275 | 通过4+1模型来管理整个系统的UML图;执行PlantUML脚本格式,支持生成多达10种UML图。 276 | #### 5.10.1 创建UML图 277 | 点击左侧菜单->设计管理->UML,打开UML列表,点击列表上方的“+”号,填写所属分类,名称,在PlantUML编辑框输入UML定义脚本,然后执行“刷新”,系统会调用PlantUML服务器生成UML图。 278 | 可以拖动缩放按钮进行图片的放大或缩小。 279 | 点击保存按钮,保存编辑的UML脚本。 280 | ![Preivew](docs/images/create_uml.png) 281 | 282 | #### 5.10.2 UML列表 283 | * 每列数据从左到右依次是:名称,自定义Tag,操作菜单; 284 | * 可以按照UML图名称查询; 285 | * 可以按照最近修改日期,最近创建日期,名称排序 286 | 287 | ![Preivew](docs/images/uml_list.png) 288 | 289 | #### 5.10.3 功能操作 290 | * 编辑UML 291 | * 复制UML 292 | * 删除UML。删除的UML不能被恢复。 293 | 294 | ### 5.11 RESTful接口 295 | 目前只提供Swagger格式的RESTful接口上载和显示功能,可以上载多个接口文件显示。 296 | ![Preivew](docs/images/restfulapi.png) 297 | 298 | ### 5.12 测试用例管理 299 | 只有产品经理和测试工程师才有权限创建和管理测试用例。“个人版本”每个需求最多可以创建20个测试用例。 300 | #### 5.12.1 创建测试用例 301 | 点击左侧菜单->测试管理->测试用例,打开测试用例列表,点击列表上方的“+”号,填写所属需求,名称,重要性,前置条件,输入数据,处理过程,期望结果等内容进行创建;可以自定义Tag进行标识; 302 | ![Preivew](docs/images/create_testcase.png) 303 | 304 | #### 5.12.2 测试用例列表 305 | * 每列数据从左到右依次是:测试用例编码OID,名称,自定义Tag,重要性,测试结果(注:非状态),操作菜单。 306 | * 可以按照OID和测试用例名称查询 307 | * 可以按照最近修改日期,最近创建日期,测试用例名称,重要程度排序 308 | * 可以按照测试结果过滤。测试结果取值有:未测试,通过,失败,阻塞。 309 | 310 | ![Preivew](docs/images/testcase_list.png) 311 | 312 | #### 5.12.3 测试用例操作 313 | * 编辑测试用例 314 | * 复制测试用例 315 | * 删除测试用例。只有初始化的测试用例才可以被删除,删除的测试用例不能被恢复 316 | * 对测试用例进行评论,查看评论 317 | * 查询测试用例的操作记录 318 | * 上载附件 319 | 320 | ### 5.13 缺陷跟踪 321 | 任何角色的用户都可以创建和提交缺陷。“个人版本”每个产品最多可以创建500个缺陷。 322 | #### 5.13.1 创建缺陷 323 | 点击左侧菜单->测试管理->缺陷,打开缺陷列表,点击列表上方的“+”号,填写所属模块,名称,重要性,产品版本,测试环境,复现条件,问题现象等内容进行创建;可以自定义Tag进行标识; 324 | ![Preivew](docs/images/create_defect.png) 325 | 326 | #### 5.13.2 缺陷列表 327 | * 每列数据从左到右依次是:缺陷编码OID,名称,自定义Tag,重要性,状态,操作菜单。 328 | * 可以按照OID和测试用例名称查询 329 | * 可以按照最近修改日期,最近创建日期,测试用例名称,重要程度排序 330 | * 可以按照状态过滤,缺陷定义的状态有:初始化,修改中,测试中,已关闭。 331 | ![Preivew](docs/images/defect_list.png) 332 | 333 | #### 5.13.3 缺陷操作 334 | * 编辑缺陷 335 | * 复制缺陷 336 | * 删除缺陷。只有初始化的缺陷才可以被删除,删除的缺陷不能被恢复。 337 | * 对缺陷进行评论,查看评论 338 | * 查询缺陷的操作记录 339 | * 上载附件 340 | 341 | #### 5.13.4 缺陷处理 342 | 处于不同状态的缺陷有不同的操作: 343 | * 初始化: 可以提交缺陷给开发人员,也可以直接关闭缺陷; 344 | * 修改中:修改完成后可以提交给测试人员进行测试,或者转给其他开发人员,也可以直接拒绝这个缺陷; 345 | * 测试中:测试人员完成测试后,可以关闭这个缺陷,或者回退给开发人员继续修改; 346 | * 已关闭:可以重新打开缺陷; 347 | 348 | ![Preivew](docs/images/defect_commit.png) 349 | 350 | ### 5.14 风险管理 351 | 任何人都可以创建和管理风险。“个人版本”每个产品最多可以创建100个风险。 352 | #### 5.14.1 创建风险 353 | 点击左侧菜单->任务管理->风险,打开风险列表,点击列表上方的“+”号,填写名称,介绍,风险几率,影响程度(会自动计算风险指数),类型,选择一个责任人,计划的风险结束日期,填写避免措施,应急计划,备注等内容进行创建;可以自定义Tag进行标识; 354 | ![Preivew](docs/images/create_risk.png) 355 | 356 | #### 5.14.2 风险列表 357 | * 每列数据从左到右依次是:风险编码OID,名称,自定义Tag,风险指数,状态,操作菜单。 358 | * 可以按照OID和风险名称查询 359 | * 可以按照最近修改日期,最近创建日期,风险名称,风险指数排序 360 | * 可以按照状态过滤,风险定义的状态有:未发生,已发生,已避免,已消失。 361 | ![Preivew](docs/images/risk_list.png) 362 | 363 | #### 5.14.3 风险操作 364 | * 编辑风险 365 | * 复制风险 366 | * 删除风险。只有未发生的风险才可以被删除,删除的风险不能被恢复。 367 | * 创建开发任务。已经发生的风险系统会自动创建一个任务进行跟踪处理,一个风险只能创建一个任务 368 | * 对风险进行评论,查看评论 369 | * 查询风险的操作记录 370 | * 上载附件 371 | 372 | ### 5.15 任务管理 373 | 任何人都可以创建和管理任务。“个人版本”每个产品最多可以创建500个任务。 374 | #### 5.14.1 创建任务 375 | 点击左侧菜单->任务管理->任务,打开任务列表,点击列表上方的“+”号,填写名称,重要性,紧急程度(会自动计算优先级),选择一个责任人,计划的任务结束日期,任务描述等内容进行创建;可以自定义Tag进行标识; 376 | ![Preivew](docs/images/create_task.png) 377 | 378 | #### 5.15.2 任务列表 379 | * 任务列表缺省以Todolist视图显示,可以与普通列表视图切换。在Todolist视图下,可以拖动一个任务以改变其状态,任务容是任务编码OID,名称,责任人,优先级,计划结束日期; 380 | ![Preivew](docs/images/todolist.png) 381 | 382 | * 普通列表每列数据从左到右依次是:任务编码OID,名称,自定义Tag,优先级,状态,操作菜单。 383 | * 可以按照OID和任务名称查询 384 | * 可以按照最近修改日期,最近创建日期,任务名称,优先级排序 385 | * 可以按照状态过滤,任务定义的状态有:待处理,处理中,待验证,已冻结,已完成。 386 | ![Preivew](docs/images/task_list.png) 387 | 388 | #### 5.15.3 任务操作 389 | * 编辑任务 390 | * 复制任务 391 | * 冻结任务 392 | * 删除任务。只有待处理的任务才可以被删除,删除的任务不能被恢复 393 | * 对任务进行评论,查看评论 394 | * 查询任务的操作记录 395 | * 上载附件 396 | 397 | ### 5.16 自定义文档 398 | 任何人都可以创建和管理自定义文档。“个人版本”每个产品最多可以创建100个文档。 399 | #### 5.16.1 创建任务 400 | 点击左侧菜单->文档,打开文档列表,点击列表上方的“+”号,填写名称,内容进行创建; 401 | ![Preivew](docs/images/create_document.png) 402 | 403 | #### 5.16.2 文档列表 404 | * 文档每列数据从左到右依次是:名称,操作菜单。 405 | * 可以按照名称查询 406 | * 可以按照最近修改日期,最近创建日期,名称排序 407 | 408 | #### 5.16.3 文档操作 409 | * 编辑文档 410 | * 复制文档 411 | * 删除文档 412 | * 对文档进行评论,查看评论 413 | * 查询文档的操作记录 414 | * 上载附件 415 | 416 | ### 5.17 产品设置 417 | * 只有产品经理才可以执行产品设置; 418 | * 点击左侧菜单->设置->产品,可以修改产品名称,描述,分类等信息。 419 | * 更换产品经理,选择一个产品成员进行更换。更换后,原来的产品经理将赋予开发工程师的角色,而新的产品经理将接替他执行管理产品的任务。 420 | 421 | ![Preivew](docs/images/change_pm.png) 422 | 423 | * 删除产品。删除产品是非常谨慎的操作,在确认删除一个产品前,需要删除该产品特性和成员(产品经理无法自我删除),必须输入正确的产品名称后才能删除,删除后的产品无法恢复。 424 | 425 | ![Preivew](docs/images/delete_product.png) 426 | 427 | ### 5.18 用户设置 428 | * 点击右上角菜单->设置,执行用户信息设置 429 | * 修改用户密码 430 | * 修改界面显示语言,目前支持简体中文和English两种语言。 431 | * 更换头像 432 | 433 | ![Preivew](docs/images/change_avatar.png) 434 | 435 | ##

六、版本与价格

436 | ### 个人版本 437 | * 团队人数:5人(包括)以下 438 | * 创建产品个数:1个 439 | * 上载文件总大小:100M 440 | * 创建迭代个数:100个 441 | * 创建特性个数:50个 442 | * 每个特性下的需求个数:30个 443 | * 每个需求下的测试用例个数:20个 444 | * 创建任务个数:500个 445 | * 创建缺陷个数:500个 446 | * 个人版本目前免费注册使用。 447 | 448 | ## 团队版本 449 | * 团队人数:50人(包括)以下 450 | * 创建产品个数:10个 451 | * 上载文件总大小:1000M 452 | * 创建迭代个数:1000个 453 | * 创建特性个数:500个 454 | * 每个特性下的需求个数:300个 455 | * 每个需求下的测试用例个数:200个 456 | * 创建任务个数:5000个 457 | * 创建缺陷个数:5000个 458 | * 团队版本目前每年费用为1888元。 459 | 460 | ## 高级版本 461 | * 团队人数:500人(包括)以下 462 | * 创建产品个数:100个 463 | * 上载文件总大小:10G 464 | * 创建迭代个数:10000个 465 | * 创建特性个数:5000个 466 | * 每个特性下的需求个数:3000个 467 | * 每个需求下的测试用例个数:2000个 468 | * 创建任务个数:50000个 469 | * 创建缺陷个数:50000个 470 | * 高级版本目前每年费用为2888元。 471 | 472 | ## 企业版本 473 | * 团队人数:5000人(包括)以下 474 | * 创建产品个数:1000个 475 | * 上载文件总大小:100G 476 | * 创建迭代个数:100000个 477 | * 创建特性个数:50000个 478 | * 每个特性下的需求个数:30000个 479 | * 每个需求下的测试用例个数:20000个 480 | * 创建任务个数:500000个 481 | * 创建缺陷个数:500000个 482 | * 企业版本目前每年费用为5888元。 483 | 484 | ##

七、定制开发

485 | * 我们可以在Toolmaker现有功能的基础上,为贵公司定制软件开发管理流程,以便更好的符合贵公司的业务流程。 486 | * 如果您看好我们的开发能力和开发质量,我们也愿意承接其他软件开发项目,请按照如下方式联系。 487 | 488 | ##

八、联系方式

489 | * 重要事项请通过邮件联系:support@toolmaker.io; 490 | * 产品缺陷或新需求可以通过[Github Issues](https://github.com/phcp-tech/toolmaker/issues)提出并获得解答; 491 | * 加入QQ讨论群:150129626,加入时请注明“Toolmaker”; 492 | * 请关注我们的微信公众号:微信公众号搜索"PHCP";或者扫描下方二维码关注: 493 | 494 | ![Preivew](https://mp.weixin.qq.com/mp/qrcode?scene=10000004&size=144&__biz=Mzg4NDA2NTQxOA==&mid=100000004&idx=1&sn=6df5d3671cb2b4034ee0dda49962519f&send_time=1545721051) 495 | 496 | ##

九、致谢

497 | * 感谢团队开发成员,感谢他们对产品的热情付出和精湛的专业技能。 498 | * Toolmaker使用了不限以下技术,在此一并致谢:vue,vuetify,nuxt,echarts,plantUML,mavon-editor,swagger-ui,golang,echo,xormplus... 499 | --------------------------------------------------------------------------------