Skip to content

Commit 07af6a7

Browse files
authored
[NEW][mindwtr][1.0.0]Add Mindwtr application (#3730)
auto merge
1 parent 89b7d98 commit 07af6a7

8 files changed

Lines changed: 310 additions & 0 deletions

File tree

‎mindwtr/.helmignore‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.git
5+
~*
6+
.DS_Store

‎mindwtr/Chart.yaml‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: v2
2+
name: mindwtr
3+
description: Mindwtr is a free, offline-first task management app built on Getting Things Done (GTD) methodology.
4+
type: application
5+
version: 1.0.0
6+
appVersion: "1.3.3"

‎mindwtr/OlaresManifest.yaml‎

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
olaresManifest.version: '0.12.0'
2+
olaresManifest.type: app
3+
apiVersion: 'v3'
4+
5+
workloadReplicas:
6+
mindwtr: 1
7+
metadata:
8+
name: mindwtr
9+
description: A free, offline-first task management app built on Getting Things Done (GTD) methodology.
10+
icon: https://raw.githubusercontent.com/dongdongbh/Mindwtr/main/apps/desktop/src-tauri/icons/128x128@2x.png
11+
appid: mindwtr
12+
version: '1.0.0'
13+
title: Mindwtr
14+
categories:
15+
- Productivity_v112
16+
- workspace
17+
permission:
18+
appData: true
19+
appCache: true
20+
spec:
21+
versionName: '1.3.3'
22+
fullDescription: |
23+
Mindwtr is a free, privacy-first task management app built on the Getting Things Done (GTD) methodology.
24+
25+
**Key Features:**
26+
- **GTD Workflow**: Inbox, Next Actions, Projects, Waiting, Someday/Maybe, and Archive.
27+
- **Fast Capture & Processing**: Quickly dump ideas and tasks with context tags, priorities, reminders, and due dates.
28+
- **Multi-Platform Sync**: Works on Web, Windows, macOS, Linux, iOS, and Android with self-hosted Mindwtr Cloud.
29+
- **Privacy & Ownership**: All data stays on your device and your personal Olares cloud, with multi-token isolated namespaces.
30+
- **Task Automation REST API**: Built-in REST API for scripting and workflow integrations.
31+
upgradeDescription: |
32+
Initial release of Mindwtr on Olares:
33+
- Bundles Mindwtr Web (PWA) and Mindwtr Cloud (sync server + REST API).
34+
- Unified single-domain reverse proxy for seamless same-origin sync.
35+
- Zero-CORS setup with auto-detected sync server.
36+
- Supports multi-device sync across Windows, macOS, Linux, iOS, and Android.
37+
developer: dongdongbh
38+
website: https://mindwtr.app
39+
sourceCode: https://github.com/dongdongbh/Mindwtr
40+
submitter: Inverstar
41+
locale:
42+
- en-US
43+
- zh-CN
44+
requiredMemory: 256Mi
45+
limitedMemory: 1024Mi
46+
requiredDisk: 256Mi
47+
limitedDisk: 10Gi
48+
requiredCpu: 0.1
49+
limitedCpu: 2
50+
supportArch:
51+
- amd64
52+
- arm64
53+
options:
54+
dependencies:
55+
- name: olares
56+
type: system
57+
version: '>=1.12.6-0'
58+
entrances:
59+
- name: mindwtr
60+
port: 5173
61+
host: mindwtr-service
62+
title: Mindwtr
63+
icon: https://raw.githubusercontent.com/dongdongbh/Mindwtr/main/apps/desktop/src-tauri/icons/128x128@2x.png
64+
openMethod: window
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
metadata:
2+
title: Mindwtr
3+
description: A free, offline-first task management app built on Getting Things Done (GTD) methodology.
4+
spec:
5+
fullDescription: |
6+
**Get things out of your head.**
7+
8+
Mindwtr is a free, privacy-first task management application based on the Getting Things Done (GTD) methodology.
9+
10+
**Key Features:**
11+
- **Full GTD Workflow**: Inbox, Next Actions, Projects, Waiting, Someday/Maybe, and Archive.
12+
- **Fast Capture & Processing**: Quickly dump ideas and tasks with context tags, priorities, reminders, and due dates.
13+
- **Multi-Platform Sync**: Works on Web, Windows, macOS, Linux, iOS, and Android with self-hosted Mindwtr Cloud.
14+
- **Privacy & Ownership**: All data stays on your device and your personal Olares cloud, with multi-token isolated namespaces.
15+
- **Task Automation REST API**: Built-in REST API for scripting and workflow integrations.
16+
upgradeDescription: |
17+
Initial release of Mindwtr on Olares:
18+
- Integrated Mindwtr Web (PWA) and Mindwtr Cloud (sync server + REST API).
19+
- Unified reverse proxy for seamless same-origin sync without CORS issues.
20+
- Auto-detects cloud URL on first launch for effortless sync setup.
21+
- Supports native mobile and desktop clients syncing directly to your Olares domain.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
metadata:
2+
title: Mindwtr
3+
description: 基于「搞定」(GTD)方法论的免费离线待办任务管理应用,支持跨平台多端同步。
4+
spec:
5+
fullDescription: |
6+
**把脑子里的事都倒出来。**
7+
8+
Mindwtr 是一款基于「搞定」(Getting Things Done,GTD)方法的免费待办和任务管理应用。可离线使用,无需账号,注重隐私。
9+
10+
**主要功能:**
11+
- **GTD 流程全覆盖**:收集箱(Inbox)、下一步行动(Next)、项目(Projects)、等待(Waiting)、将来/也许(Someday)及归档。
12+
- **极速收集与处理**:快速记录灵感与任务,支持上下文标签、优先级、提醒和截止日期。
13+
- **多端同步与跨平台**:支持 Web、Windows、macOS、Linux、iOS 及 Android 端,通过私有部署的 Mindwtr Cloud 同步数据。
14+
- **数据安全与隐私**:所有数据均保存在本地和您的 Olares 私有云中,支持多 Token 用户数据隔离。
15+
- **REST API 自动化**:内置 REST API,方便与其他自动化工具集成。
16+
upgradeDescription: |
17+
Olares 首发版本:
18+
- 集成 Mindwtr Web(PWA 网页版)与 Mindwtr Cloud(同步与 REST API 服务端)。
19+
- 采用一体化反向代理架构,Web 与 API 同源,实现零 CORS 跨域配置开箱即用。
20+
- 自动识别云同步地址,仅需设置 Token 即可无缝同步。
21+
- 支持桌面与移动端客户端(iOS / Android / Win / Mac)直接连接 Olares 域名进行同步。

‎mindwtr/owners‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
owners:
2+
- 'Inverstar'
3+
- 'LittleLollipop'
4+
- 'TShentu'
5+
- 'hysyeah'
6+
- 'pengpeng'
7+
- 'harveyff'
8+
- 'zdf-org'

‎mindwtr/templates/mindwtr.yaml‎

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: mindwtr-nginx-conf
5+
namespace: {{ .Release.Namespace }}
6+
data:
7+
default.conf: |
8+
server {
9+
listen 5173;
10+
server_name _;
11+
12+
root /usr/share/nginx/html;
13+
index index.html;
14+
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: file:; media-src 'self' data: blob: file:; font-src 'self' data:; connect-src 'self' https: http://localhost:* ws://localhost:*; object-src 'none'; frame-src 'none'; base-uri 'self'; form-action 'self'; manifest-src 'self'; worker-src 'self'" always;
15+
add_header X-Content-Type-Options "nosniff" always;
16+
add_header Referrer-Policy "no-referrer" always;
17+
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
18+
add_header X-Frame-Options "SAMEORIGIN" always;
19+
20+
location /v1/ {
21+
proxy_pass http://127.0.0.1:8787/v1/;
22+
proxy_set_header Host $host;
23+
proxy_set_header X-Real-IP $remote_addr;
24+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
25+
proxy_set_header X-Forwarded-Proto $scheme;
26+
client_max_body_size 50M;
27+
}
28+
29+
location /health {
30+
proxy_pass http://127.0.0.1:8787/health;
31+
proxy_set_header Host $host;
32+
proxy_set_header X-Real-IP $remote_addr;
33+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
34+
proxy_set_header X-Forwarded-Proto $scheme;
35+
}
36+
37+
location /ready {
38+
proxy_pass http://127.0.0.1:8787/ready;
39+
proxy_set_header Host $host;
40+
proxy_set_header X-Real-IP $remote_addr;
41+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
42+
proxy_set_header X-Forwarded-Proto $scheme;
43+
}
44+
45+
location /assets/ {
46+
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: file:; media-src 'self' data: blob: file:; font-src 'self' data:; connect-src 'self' https: http://localhost:* ws://localhost:*; object-src 'none'; frame-src 'none'; base-uri 'self'; form-action 'self'; manifest-src 'self'; worker-src 'self'" always;
47+
add_header X-Content-Type-Options "nosniff" always;
48+
add_header Referrer-Policy "no-referrer" always;
49+
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
50+
add_header X-Frame-Options "SAMEORIGIN" always;
51+
add_header Cache-Control "public, max-age=31536000, immutable" always;
52+
try_files $uri =404;
53+
}
54+
55+
location / {
56+
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: file:; media-src 'self' data: blob: file:; font-src 'self' data:; connect-src 'self' https: http://localhost:* ws://localhost:*; object-src 'none'; frame-src 'none'; base-uri 'self'; form-action 'self'; manifest-src 'self'; worker-src 'self'" always;
57+
add_header X-Content-Type-Options "nosniff" always;
58+
add_header Referrer-Policy "no-referrer" always;
59+
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
60+
add_header X-Frame-Options "SAMEORIGIN" always;
61+
add_header Cache-Control "no-cache" always;
62+
try_files $uri /index.html;
63+
}
64+
}
65+
---
66+
apiVersion: apps/v1
67+
kind: Deployment
68+
metadata:
69+
name: mindwtr
70+
namespace: {{ .Release.Namespace }}
71+
labels:
72+
io.kompose.service: mindwtr
73+
spec:
74+
replicas: {{ .Values.workloads.mindwtr.replicaCount }}
75+
selector:
76+
matchLabels:
77+
io.kompose.service: mindwtr
78+
strategy:
79+
type: Recreate
80+
template:
81+
metadata:
82+
labels:
83+
io.kompose.service: mindwtr
84+
spec:
85+
securityContext:
86+
fsGroup: 1000
87+
containers:
88+
- name: mindwtr-app
89+
image: "{{ .Values.image.app.repository }}:{{ .Values.image.app.tag }}"
90+
imagePullPolicy: {{ .Values.image.app.pullPolicy | default "IfNotPresent" }}
91+
ports:
92+
- name: http
93+
containerPort: 5173
94+
protocol: TCP
95+
volumeMounts:
96+
- name: nginx-conf
97+
mountPath: /etc/nginx/conf.d/default.conf
98+
subPath: default.conf
99+
resources:
100+
requests:
101+
cpu: 50m
102+
memory: 64Mi
103+
limits:
104+
cpu: 500m
105+
memory: 256Mi
106+
- name: mindwtr-cloud
107+
image: "{{ .Values.image.cloud.repository }}:{{ .Values.image.cloud.tag }}"
108+
imagePullPolicy: {{ .Values.image.cloud.pullPolicy | default "IfNotPresent" }}
109+
env:
110+
- name: MINDWTR_CLOUD_DATA_DIR
111+
value: "/app/cloud_data"
112+
- name: MINDWTR_CLOUD_CORS_ORIGIN
113+
value: "http://localhost:5173"
114+
- name: MINDWTR_CLOUD_ALLOW_ANY_TOKEN
115+
value: {{ .Values.cloud.allowAnyToken | default "true" | quote }}
116+
{{- if .Values.cloud.authTokens }}
117+
- name: MINDWTR_CLOUD_AUTH_TOKENS
118+
value: {{ .Values.cloud.authTokens | quote }}
119+
{{- end }}
120+
ports:
121+
- name: cloud
122+
containerPort: 8787
123+
protocol: TCP
124+
volumeMounts:
125+
- name: mindwtr-data
126+
mountPath: /app/cloud_data
127+
resources:
128+
requests:
129+
cpu: 100m
130+
memory: 128Mi
131+
limits:
132+
cpu: 1000m
133+
memory: 512Mi
134+
restartPolicy: Always
135+
volumes:
136+
- name: nginx-conf
137+
configMap:
138+
name: mindwtr-nginx-conf
139+
- name: mindwtr-data
140+
hostPath:
141+
type: DirectoryOrCreate
142+
path: '{{ .Values.userspace.appData }}/mindwtr'
143+
---
144+
apiVersion: v1
145+
kind: Service
146+
metadata:
147+
name: mindwtr-service
148+
namespace: {{ .Release.Namespace }}
149+
labels:
150+
io.kompose.service: mindwtr
151+
spec:
152+
ports:
153+
- name: http
154+
port: 5173
155+
targetPort: 5173
156+
protocol: TCP
157+
- name: cloud
158+
port: 8787
159+
targetPort: 8787
160+
protocol: TCP
161+
selector:
162+
io.kompose.service: mindwtr

‎mindwtr/values.yaml‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
image:
2+
app:
3+
repository: ghcr.io/dongdongbh/mindwtr-app
4+
tag: 1.3.3
5+
pullPolicy: IfNotPresent
6+
cloud:
7+
repository: ghcr.io/dongdongbh/mindwtr-cloud
8+
tag: 1.3.3
9+
pullPolicy: IfNotPresent
10+
11+
userspace:
12+
appData: ""
13+
14+
workloads:
15+
mindwtr:
16+
replicaCount: 1
17+
18+
cloud:
19+
# Allows any valid Bearer token (min 20 chars) to claim a private dataset namespace
20+
allowAnyToken: "true"
21+
# Optional explicit comma-separated auth tokens (min 20 chars each)
22+
authTokens: ""

0 commit comments

Comments
 (0)