From 36c578a924e1524686977ebbc69ac9e7e4793a2e Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Mon, 20 Jan 2025 12:29:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=BA=94=E7=94=A8=EF=BC=9AEi?= =?UTF-8?q?genfocus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Meng Sen --- apps/eigenfocus/0.6.0/data.yml | 24 ++++++++++++ apps/eigenfocus/0.6.0/docker-compose.yml | 22 +++++++++++ apps/eigenfocus/0.6.0/envs/default.env | 2 + apps/eigenfocus/0.6.0/envs/global.env | 2 + apps/eigenfocus/0.6.0/scripts/init.sh | 17 +++++++++ apps/eigenfocus/0.6.0/scripts/uninstall.sh | 10 +++++ apps/eigenfocus/0.6.0/scripts/upgrade.sh | 17 +++++++++ apps/eigenfocus/README.md | 41 +++++++++++++++++++++ apps/eigenfocus/data.yml | 14 +++++++ apps/eigenfocus/logo.png | Bin 0 -> 15203 bytes 10 files changed, 149 insertions(+) create mode 100644 apps/eigenfocus/0.6.0/data.yml create mode 100644 apps/eigenfocus/0.6.0/docker-compose.yml create mode 100644 apps/eigenfocus/0.6.0/envs/default.env create mode 100644 apps/eigenfocus/0.6.0/envs/global.env create mode 100644 apps/eigenfocus/0.6.0/scripts/init.sh create mode 100644 apps/eigenfocus/0.6.0/scripts/uninstall.sh create mode 100644 apps/eigenfocus/0.6.0/scripts/upgrade.sh create mode 100644 apps/eigenfocus/README.md create mode 100644 apps/eigenfocus/data.yml create mode 100644 apps/eigenfocus/logo.png diff --git a/apps/eigenfocus/0.6.0/data.yml b/apps/eigenfocus/0.6.0/data.yml new file mode 100644 index 00000000..453e9241 --- /dev/null +++ b/apps/eigenfocus/0.6.0/data.yml @@ -0,0 +1,24 @@ +additionalProperties: + formFields: + - default: "/home/eigenfocus" + edit: true + envKey: EIGENFOCUS_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "http://127.0.0.1:3000" + edit: true + envKey: DEFAULT_HOST_URL + labelZh: 服务地址 + labelEn: Server Url + required: true + type: text diff --git a/apps/eigenfocus/0.6.0/docker-compose.yml b/apps/eigenfocus/0.6.0/docker-compose.yml new file mode 100644 index 00000000..2f09d59c --- /dev/null +++ b/apps/eigenfocus/0.6.0/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true + +services: + eigenfocus: + image: eigenfocus/eigenfocus:0.6.0 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${EIGENFOCUS_ROOT_PATH}/data:/eigenfocus-app/app-data + environment: + - TZ=Asia/Shanghai diff --git a/apps/eigenfocus/0.6.0/envs/default.env b/apps/eigenfocus/0.6.0/envs/default.env new file mode 100644 index 00000000..cd05f46e --- /dev/null +++ b/apps/eigenfocus/0.6.0/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/eigenfocus/0.6.0/envs/global.env b/apps/eigenfocus/0.6.0/envs/global.env new file mode 100644 index 00000000..e10989fe --- /dev/null +++ b/apps/eigenfocus/0.6.0/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/eigenfocus/0.6.0/scripts/init.sh b/apps/eigenfocus/0.6.0/scripts/init.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/apps/eigenfocus/0.6.0/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/eigenfocus/0.6.0/scripts/uninstall.sh b/apps/eigenfocus/0.6.0/scripts/uninstall.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/eigenfocus/0.6.0/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/eigenfocus/0.6.0/scripts/upgrade.sh b/apps/eigenfocus/0.6.0/scripts/upgrade.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/apps/eigenfocus/0.6.0/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/eigenfocus/README.md b/apps/eigenfocus/README.md new file mode 100644 index 00000000..ebf7b4fc --- /dev/null +++ b/apps/eigenfocus/README.md @@ -0,0 +1,41 @@ +# Eigenfocus + +看板、时间跟踪与专注工具 + +![Eigenfocus](https://file.lifebus.top/imgs/eigenfocus_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +### 项目 + +创建/编辑/更新/存档您的项目 + +### 版块 + +每个项目都有一个版块,您可以在其中自定义列以适应您的流程 + +### 问题 + +创建问题,编写 Markdown 描述并附加文件 + +### 工作流程与看板 + +在列之间移动问题 + +### 时间跟踪 + +跟踪在项目和特定问题上的时间 + +### 时间报告 + +按项目和时间段生成时间报告 + +### 主题 + +根据您的喜好自定义 UI + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/eigenfocus/data.yml b/apps/eigenfocus/data.yml new file mode 100644 index 00000000..d58a29eb --- /dev/null +++ b/apps/eigenfocus/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: eigenfocus + name: Eigenfocus + tags: + - WebSite + - Local + shortDescZh: 看板、时间跟踪与专注工具 + shortDescEn: Dashboard, Time Tracking and Focus Tool + type: website + crossVersionUpdate: true + limit: 0 + website: https://eigenfocus.com/ + github: https://github.com/Eigenfocus/eigenfocus/ + document: https://eigenfocus.com/ diff --git a/apps/eigenfocus/logo.png b/apps/eigenfocus/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5638e2178017812662915dfa01ff62af48083a5f GIT binary patch literal 15203 zcmV-pJDkLcP)0055&1^@s6eKpX|00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0001l zWmrjOO-%qQ0000800jXO00RI3009620003R00jU50096107?NH00jU50096108#-c z00RI300963004(+00aO40096109pV5000000384T009610384T00964paB2_00001 z00961paK8{000010001>paTE|000010001w00000uWU?k00009a7bBm000Db000Db z0lht{#{d8US!q;QbXZMHI%98bE@5PEVr4FPZEyep0000ycsh7(aBXFDVIX*IY;JQp zcs(LvWN%_+I&O11ZDn*}FCrj#I(ThxbZb2#SWQqMLvM0rAT};AE-)fK3LqdLJaS}a zI#NVNAb4$TZgVgOb#y%=l=%RM1tJfoU>Qv-zyDduV zb(geew_Z=0c1q7fG*v1sy~rfIywE!T7RfHLc6MoW z>Fm_R-nrSjTNa&Wm%5pmDE7QZBvF!UMW8)*h}4{Bq0 z#j~^G?BW39#RI@b;kb3s;dkVo#X~N2uLC$YQ|^b7D7_pUi~|-l81RVPDrLMTfN_ta z13m(tz#^>3K}Yv!HuJDopesE4K!k9B0#qrwoIMAC>YeTzFZCKvz)G4m{6~lqD_#6n zcyrbz?ztpRABW;MCnu-BgO)^ddZ$XJJ2bp-&u@FWOv2lfdE=UbsB@EVUhg=*_}U~& z-k8Sj^%T!FKxGnTlmMRDY+`$NLi0%=71V?at1z~!PEg)<5x z0wz4CuQ(S!mL|#9#^cF9oxRVU2~5t+q_yp;6}K+{0Z#p7gpKFzx|zGvz01+u+pw>G zh{C%8HG-C_En}kzbZe0`76nT|Z;L!rDWq?$xrbx%JPJC;OzovK*KvF*U2}i*@W;mf zU#Lvm5s2HOFhWiDS8tfl&ibbI=ts_98LigdO;I)qottJV^ziGM9%=xCXna=il zqFMI#r&{ea9R-LoBN8gqlNb=ccV^f4?>}01i^`P;V$KxV!dcx`0Gye5fTqTGEZ+Nz z=MIjpjogl=csmW&GzGNC{Ys`SOi^rMxevvfX~!7NkB-EI9Ct1mmAwejFN{r(|4!&p z%T5d}#83%tVB~EAKtG%!Vb0V~jV&+U^u9Dr-h(B#8^F!0iA5W1o94CR@{|cFBa$Ja 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