From e94179ea4fed5eb31ce8d1608529936a1b3f4094 Mon Sep 17 00:00:00 2001 From: wanghe Date: Tue, 6 Aug 2024 15:55:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20NocoDB=20(#1882)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/nocodb/0.251.3/data.yml | 52 +++++++++++++++++++++++++ apps/nocodb/0.251.3/docker-compose.yml | 18 +++++++++ apps/nocodb/0.251.3/scripts/init.sh | 22 +++++++++++ apps/nocodb/README.md | 15 +++++++ apps/nocodb/data.yml | 19 +++++++++ apps/nocodb/logo.png | Bin 0 -> 6451 bytes 6 files changed, 126 insertions(+) create mode 100644 apps/nocodb/0.251.3/data.yml create mode 100644 apps/nocodb/0.251.3/docker-compose.yml create mode 100644 apps/nocodb/0.251.3/scripts/init.sh create mode 100644 apps/nocodb/README.md create mode 100644 apps/nocodb/data.yml create mode 100644 apps/nocodb/logo.png diff --git a/apps/nocodb/0.251.3/data.yml b/apps/nocodb/0.251.3/data.yml new file mode 100644 index 000000000..4614b0505 --- /dev/null +++ b/apps/nocodb/0.251.3/data.yml @@ -0,0 +1,52 @@ +additionalProperties: + formFields: + - child: + default: "" + envKey: PANEL_DB_HOST + required: true + type: service + default: mysql + edit: true + envKey: PANEL_DB_TYPE + labelZh: 数据库 服务 + labelEn: Database Service + required: true + type: apps + values: + - label: MySQL + value: mysql + - label: PostgreSQL + value: postgresql + - label: MariaDB + value: mariadb + - default: nocodb + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true + required: true + rule: paramCommon + type: text + - default: nocodb + envKey: PANEL_DB_USER + labelEn: User + labelZh: 数据库用户 + random: true + required: true + rule: paramCommon + type: text + - default: nocodb + envKey: PANEL_DB_USER_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: 8080 + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number \ No newline at end of file diff --git a/apps/nocodb/0.251.3/docker-compose.yml b/apps/nocodb/0.251.3/docker-compose.yml new file mode 100644 index 000000000..842a53c2f --- /dev/null +++ b/apps/nocodb/0.251.3/docker-compose.yml @@ -0,0 +1,18 @@ +services: + nocodb: + image: nocodb/nocodb:0.251.3 + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:8080 + environment: + NC_DB: "${PANEL_DB_TYPE}://${PANEL_DB_HOST}:${PANEL_DB_PORT}?u=${PANEL_DB_USER}&p=${PANEL_DB_USER_PASSWORD}&d=${PANEL_DB_NAME}" + volumes: + - ./data:/usr/app/data + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/nocodb/0.251.3/scripts/init.sh b/apps/nocodb/0.251.3/scripts/init.sh new file mode 100644 index 000000000..7c600aa84 --- /dev/null +++ b/apps/nocodb/0.251.3/scripts/init.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +ENV_FILE=".env" + +if [ -f "$ENV_FILE" ]; then + PANEL_DB_TYPE=$(grep '^PANEL_DB_TYPE=' "$ENV_FILE" | cut -d '=' -f 2 | tr -d '"') + + if [ "$PANEL_DB_TYPE" == "postgresql" ]; then + NEW_DB_TYPE="pg" + elif [ "$PANEL_DB_TYPE" == "mysql" ] || [ "$PANEL_DB_TYPE" == "mariadb" ]; then + NEW_DB_TYPE="mysql2" + else + echo "Unsupported PANEL_DB_TYPE value: $PANEL_DB_TYPE" + exit 1 + fi + + sed -i "s/^PANEL_DB_TYPE=.*/PANEL_DB_TYPE=\"$NEW_DB_TYPE\"/" "$ENV_FILE" + +else + echo ".env file not found!" + exit 1 +fi \ No newline at end of file diff --git a/apps/nocodb/README.md b/apps/nocodb/README.md new file mode 100644 index 000000000..b6ee34047 --- /dev/null +++ b/apps/nocodb/README.md @@ -0,0 +1,15 @@ +# NocoDB + +**NocoDB** 是一个开源的无代码(No-Code)数据库平台,它使得用户能够通过图形化界面创建、管理和操作数据库,而无需编写代码。NocoDB 旨在简化数据管理过程,提供一个可视化的用户界面来处理数据库中的数据,支持与各种数据库系统的集成。 + +## 主要功能: + +- **无代码数据库管理**:提供直观的图形化界面,用户可以通过拖放操作来管理数据库表和字段,无需编写 SQL 语句或进行复杂的设置。 +- **多种数据库支持**:支持多种主流数据库系统,包括 MySQL、PostgreSQL、SQL Server 和 SQLite,使用户能够轻松连接和管理各种数据源。 +- **表格视图和数据操作**:允许用户以表格视图查看和编辑数据,提供类似电子表格的操作体验,方便数据的查看、修改和过滤。 +- **自定义视图和过滤器**:用户可以创建自定义视图,应用过滤器和排序选项,以满足特定的数据查看和操作需求。 +- **表单和视图设计**:支持创建自定义表单和视图,用户可以根据需要设计数据输入表单和数据展示界面。 +- **API 接口生成**:自动生成 RESTful API 接口,使得用户能够通过 API 访问和操作数据库中的数据,方便与其他应用和系统集成。 +- **用户权限管理**:提供灵活的权限管理功能,允许管理员为不同的用户和用户组设置访问权限和操作权限,确保数据安全性。 +- **自动化和集成**:支持与第三方服务和应用的集成,提供自动化操作和工作流的功能,帮助用户实现数据的自动化处理和管理。 +- **审计和日志记录**:记录数据操作的日志,提供审计功能,帮助用户跟踪和审查数据的变更历史和操作记录。 \ No newline at end of file diff --git a/apps/nocodb/data.yml b/apps/nocodb/data.yml new file mode 100644 index 000000000..f915ee9d0 --- /dev/null +++ b/apps/nocodb/data.yml @@ -0,0 +1,19 @@ +name: NocoDB +tags: + - 数据库 +title: 无代码数据库平台 +description: 无代码数据库平台 +additionalProperties: + key: nocodb + name: NocoDB + tags: + - Database + shortDescZh: 无代码数据库平台 + shortDescEn: Code-free database platform + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://nocodb.com/ + github: https://github.com/nocodb/nocodb/ + document: https://docs.nocodb.com/ \ No newline at end of file diff --git a/apps/nocodb/logo.png b/apps/nocodb/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63195ff2f344e1b7c08d948cdf0d7ca0587bf1d8 GIT binary patch literal 6451 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 literal 0 HcmV?d00001