From 2c7d36b2bc1983e8d39a45923d0f12c67bceb14d Mon Sep 17 00:00:00 2001 From: wanghe Date: Tue, 20 Aug 2024 17:50:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20AFFiNE=20(#1954)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/affine/README.md | 21 ++++++++ apps/affine/data.yml | 19 +++++++ apps/affine/logo.png | Bin 0 -> 3862 bytes apps/affine/stable/data.yml | 74 ++++++++++++++++++++++++++ apps/affine/stable/docker-compose.yml | 34 ++++++++++++ 5 files changed, 148 insertions(+) create mode 100644 apps/affine/README.md create mode 100644 apps/affine/data.yml create mode 100644 apps/affine/logo.png create mode 100644 apps/affine/stable/data.yml create mode 100644 apps/affine/stable/docker-compose.yml diff --git a/apps/affine/README.md b/apps/affine/README.md new file mode 100644 index 000000000..b76b8b076 --- /dev/null +++ b/apps/affine/README.md @@ -0,0 +1,21 @@ +# AFFiNE + +**AFFiNE** 是一个开源的一体化工作区和操作系统,适用于构建知识库的所有构建块以及更多内容——wiki、知识管理、演示和数字资产。它是 Notion 和 Miro 的更好替代品。 + +## 主要特征: + +### 任何形式的块的真正画布,文档和白板现已完全合并。 + +- 许多编辑器应用都声称自己是生产力的画布,但 AFFiNE 是极少数允许您在无边画布上放置任何构建块的应用之一——富文本、便签、任何嵌入式网页、多视图数据库、链接页面、形状甚至幻灯片。我们拥有一切。 + +### 多模式 AI 合作伙伴随时准备投入任何工作 + +- 撰写专业的工作报告?将大纲变成富有表现力且易于展示的幻灯片?将文章总结为结构良好的思维导图?整理工作计划和待办事项?或者... 只需一个提示即可直接绘制和编写原型应用程序和网页?有了你,AFFiNE AI 可以将您的创造力推向想象的边缘。 + +### 本地优先、实时协作 + +- 我们喜欢本地优先的理念,即无论使用云端,您始终拥有磁盘上的数据。此外,AFFiNE 支持在 Web 和跨平台客户端上进行实时同步和协作。 + +### 自托管并塑造您自己的 AFFiNE + +- 您可以自由地管理、自行托管、分叉和构建自己的 AFFiNE。插件社区和第三方模块即将推出。Blocksuite 上还有更多牵引力。查看那里了解如何自行托管 AFFiNE。 \ No newline at end of file diff --git a/apps/affine/data.yml b/apps/affine/data.yml new file mode 100644 index 000000000..c38721523 --- /dev/null +++ b/apps/affine/data.yml @@ -0,0 +1,19 @@ +name: AFFiNE +tags: + - 实用工具 +title: 将文档、白板和数据库完全整合的工作空间 +description: 将文档、白板和数据库完全整合的工作空间 +additionalProperties: + key: affine + name: AFFiNE + tags: + - Tool + shortDescZh: 将文档、白板和数据库完全整合的工作空间 + shortDescEn: A workspace with fully merged docs, whiteboards and databases + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://affine.pro + github: https://github.com/toeverything/AFFiNE + document: https://docs.affine.pro/docs/self-host-affine \ No newline at end of file diff --git a/apps/affine/logo.png b/apps/affine/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f973a537a83454340914806309d427b6c15ae0 GIT binary patch literal 3862 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 A`2YX_ literal 0 HcmV?d00001 diff --git a/apps/affine/stable/data.yml b/apps/affine/stable/data.yml new file mode 100644 index 000000000..dc18035ed --- /dev/null +++ b/apps/affine/stable/data.yml @@ -0,0 +1,74 @@ +additionalProperties: + formFields: + - default: 3010 + envKey: PANEL_APP_PORT_HTTP + labelEn: Web Port + labelZh: HTTP 端口 + required: true + rule: paramPort + type: number + - default: 5555 + envKey: PANEL_APP_PORT_HTTP_5555 + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: AFFINE_ADMIN_EMAIL + labelEn: email + labelZh: 管理员邮箱 + required: true + type: text + - default: "" + edit: true + envKey: AFFINE_ADMIN_PASSWORD + labelEn: password + labelZh: 管理员密码 + required: true + type: password + - default: "" + envKey: PANEL_DB_HOST + key: postgresql + labelEn: PostgreSQL Database Service + labelZh: PostgreSQL 数据库服务 + required: true + type: service + - default: affine + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true + required: true + rule: paramCommon + type: text + - default: affine + envKey: PANEL_DB_USER + labelEn: User + labelZh: 数据库用户 + random: true + required: true + rule: paramCommon + type: text + - default: affine + envKey: PANEL_DB_USER_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: "" + envKey: PANEL_REDIS_HOST + key: redis + labelEn: Redis Service + labelZh: redis 服务 + required: true + type: service + - default: "" + disabled: true + envKey: PANEL_REDIS_ROOT_PASSWORD + labelEn: Password + labelZh: redis 密码 + type: text \ No newline at end of file diff --git a/apps/affine/stable/docker-compose.yml b/apps/affine/stable/docker-compose.yml new file mode 100644 index 000000000..b07f40fd6 --- /dev/null +++ b/apps/affine/stable/docker-compose.yml @@ -0,0 +1,34 @@ +services: + affine: + image: ghcr.io/toeverything/affine-graphql:stable + container_name: ${CONTAINER_NAME} + restart: unless-stopped + ports: + - ${PANEL_APP_PORT_HTTP}:3010 + - ${PANEL_APP_PORT_HTTP_5555}:5555 + command: + ['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js'] + volumes: + - ./data/storage:/root/.affine/storage + - ./data/config:/root/.affine/config + networks: + - 1panel-network + environment: + - NODE_OPTIONS="--import=./scripts/register.js" + - AFFINE_CONFIG_PATH=/root/.affine/config + - REDiIS_SERVER_HOST=${REDIS_HOST} + - REDIS_SERVER_PORT=6379 + - REDIS_SERVER_PASSWORD=${PANEL_REDIS_ROOT_PASSWORD} + - DATABASE_URL=postgres://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@${PANEL_DB_HOST}:${PANEL_DB_PORT}/${PANEL_DB_NAME} + - NODE_ENV=production + - AFFINE_ADMIN_EMAIL=${AFFINE_ADMIN_EMAIL} + - AFFINE_ADMIN_PASSWORD=${AFFINE_ADMIN_PASSWORD} + logging: + driver: 'json-file' + options: + max-size: '1000m' + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file