From 8309abd75daa69a245102023c71c8fd4e072e4b8 Mon Sep 17 00:00:00 2001 From: wanghe Date: Tue, 10 Oct 2023 02:38:45 -0500 Subject: [PATCH] feat: add ShowDoc (#480) --- apps/showdoc/3.2.2/data.yml | 9 +++++++++ apps/showdoc/3.2.2/docker-compose.yml | 19 +++++++++++++++++++ apps/showdoc/README.md | 9 +++++++++ apps/showdoc/data.yml | 20 ++++++++++++++++++++ apps/showdoc/logo.png | Bin 0 -> 14865 bytes 5 files changed, 57 insertions(+) create mode 100755 apps/showdoc/3.2.2/data.yml create mode 100644 apps/showdoc/3.2.2/docker-compose.yml create mode 100644 apps/showdoc/README.md create mode 100755 apps/showdoc/data.yml create mode 100644 apps/showdoc/logo.png diff --git a/apps/showdoc/3.2.2/data.yml b/apps/showdoc/3.2.2/data.yml new file mode 100755 index 000000000..1e1ccc915 --- /dev/null +++ b/apps/showdoc/3.2.2/data.yml @@ -0,0 +1,9 @@ +additionalProperties: + formFields: + - default: 4999 + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/showdoc/3.2.2/docker-compose.yml b/apps/showdoc/3.2.2/docker-compose.yml new file mode 100644 index 000000000..a668da94c --- /dev/null +++ b/apps/showdoc/3.2.2/docker-compose.yml @@ -0,0 +1,19 @@ +version: '3' +services: + showdoc: + image: star7th/showdoc:v3.2.2 + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:80 + tty: true + volumes: + - /showdoc_data:/showdoc_data_old + - ./showdocdata/html:/var/www/html + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/showdoc/README.md b/apps/showdoc/README.md new file mode 100644 index 000000000..34d7f435d --- /dev/null +++ b/apps/showdoc/README.md @@ -0,0 +1,9 @@ +# ShowDoc + +**ShowDoc** 是一个非常适合IT团队的在线API文档、技术文档工具。通过showdoc,你可以方便地使用markdown语法来书写出美观的API文档、数据字典文档、技术文档、在线excel文档等等。如果不想编辑markdown文档,你还可以利用showdoc的自动化能力,从程序注释中自动生成API文档,或者从搭配的RunApi客户端(类似postman的api调试工具)中一边调试接口、一边自动生成文档。通过分配项目成员和团队成员,你可以很方便地进行项目文档的权限管理和团队协作,也可以分享文档出去给朋友查看。ShowDoc还支持多平台客户端,有win客户端、mac客户端、ios、android等,更方便跨平台使用。 + +## 主要功能: + +- **API文档**:随着移动互联网的发展,BaaS(后端即服务)越来越流行。服务端提供API,APP端或者网页前端便可方便调用数据。用ShowDoc可以非常方便快速地编写出美观的API文档。 +- **数据字典**:一份好的数据字典可以很方便地向别人说明你的数据库结构,如各个字段的释义等。 +- **说明文档**:你完全可以使用showdoc来编写一些工具的说明书,也可以编写一些技术规范说明文档以供团队查阅。 \ No newline at end of file diff --git a/apps/showdoc/data.yml b/apps/showdoc/data.yml new file mode 100755 index 000000000..f0cc32f62 --- /dev/null +++ b/apps/showdoc/data.yml @@ -0,0 +1,20 @@ +name: ShowDoc +tags: + - DevOps +title: 一个非常适合IT团队的在线API文档、技术文档工具 +type: DevOps +description: 一个非常适合IT团队的在线API文档、技术文档工具 +additionalProperties: + key: showdoc + name: ShowDoc + tags: + - DevOps + shortDescZh: 一个非常适合IT团队的在线API文档、技术文档工具 + shortDescEn: ShowDoc is a tool greatly applicable for an IT team to share documents online + type: tool + crossVersionUpdate: false + limit: 0 + recommend: 0 + website: https://www.showdoc.com.cn/ + github: https://github.com/star7th/showdoc + document: https://www.showdoc.com.cn/help diff --git a/apps/showdoc/logo.png b/apps/showdoc/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..31024f07d66608ebbe1fbbf7f1df48629856faea GIT binary patch literal 14865 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 DoYC}< literal 0 KcmV+b0RR6000031