自托管 · 离线优先 · 为个人开发者

让散落的任务 各归其位。

TaskDock 是一个自托管的任务工作台:先把想法记下来,再按目录、日期和流程安排,每个任务都能附上开发笔记。它部署在你自己的服务器上,断网时照样能看、能改。

2.0 预览版 网页 / PWA · Android · Docker 中枢

01数据模型

一个任务,
只有一个事实。

目录决定任务放在哪里,日期与时间点决定什么时候关注它,流程记录它走到哪个阶段,步骤拆解它具体怎么做。四个维度彼此独立,引用的始终是同一个任务——在任何一处改变状态,所有视图同时更新。

/tree 同一个 taskId

02日期与时间点

什么时候做,
交给时间轴。

把任务安排到某一天,或者挂在一个还没有确定日期的事件上。安排只是一条引用:同一个任务可以同时出现在好几处,完成一次,处处完成。

拖到时间轴上,或点选后再点目标列:
试试把任务拖到另一天:它不会被复制,只是多了一处安排。

安排不是复制

加入日程只增加一条安排关系,标题、状态和笔记仍然只存在于任务本身。

顺延可以撤销

把某一天仍未完成的安排批量顺延到次日,自动跳过已完成或已归档的任务,随时可以撤销。

事件到达不改任务

「上线前」「额度重置后」这样的事件到达,只改变事件本身;任务是否完成,仍然由你决定。

03离线优先

断网的时候,
工作不会停。

界面先读本地数据,不等网络。每次修改和它的待同步记录在同一个本地事务里写入;恢复连接后按顺序推送,再拉取其他设备的变化。

  • 先读本地。浏览器使用 IndexedDB,Android 使用 Room,打开就能用。
  • 按顺序重放。修改先进入待同步队列,联网后逐条推送;同一条修改重试不会重复写入。
  • 冲突不静默覆盖。版本对不上时,同时保留你的修改和服务器快照,由你决定。
  • 高风险操作不冒险。整棵目录删除、批量顺延这类操作,离线时直接拒绝。
  • 实时但克制。WebSocket 只推送“需要同步”的信号,不携带任务内容。
浏览器 · PWA在线
待同步队列0
TaskDock 中枢 Fastify · PostgreSQL cursor 1042
Android在线
待同步队列0

点浏览器里任务前的圆圈改变状态,看修改怎样到达中枢和 Android;再把浏览器切到离线试试。

04自托管

数据放在你自己的
服务器上。

TaskDock 以 Docker 镜像发布在 GitHub Container Registry。服务器上不需要源码,也不需要 Node.js:准备好 compose.yaml 和 .env,拉取镜像、执行迁移、启动,家里的 NAS 也能跑。

# 在空目录中准备 compose.yaml 与 .env.example
$ cp .env.example .env
# 生成随机密钥,填写 .env 里的密码与令牌
$ openssl rand -base64 48
$ export APP_VERSION=2.0.0-rc.37
$ docker compose pull
$ docker compose --profile operations run --rm migrate
$ docker compose up -d
# 默认访问 http://服务器地址:48731
Caddy 网关(可选)
反向代理;HTTPS 地址自动签发证书
:80 :443
TaskDock 中枢
REST · WebSocket · 网页端
:48731
PostgreSQL 18
权威数据源,只在容器网络内可达
不映射端口
  • 推荐固定具体版本号。latest 只跟随正式稳定版,不会指向预览版。
  • 公网建议使用 HTTPS。HTTP 地址也能用,但界面会给出安全提示;网页端要安装为 PWA 或离线打开,需要 HTTPS(或本机 localhost)。
  • 用于重要数据前,先读 备份与恢复 和 安全说明。

05细节

每天都会碰到的小事,
都有安放的位置。

05.1

Markdown 开发笔记

每个任务都能保存 Markdown 笔记,记下思路、命令、链接和处理过程,和任务放在一起。

05.2

命令面板

在桌面浏览器按 ⌘ K 或 Ctrl K,直接搜索任务和备注。

05.3

右滑完成

在手机浏览器里,向右滑过阈值即可完成任务,向左滑展开操作菜单;随手记录有常驻的新建按钮。

05.4

按操作恢复归档

归档文件夹会逐项归档整棵子树;恢复时只恢复这一次操作归档的内容,不会误恢复更早归档的任务。

05.5

不变的任务编号

新任务统一使用 TASK-N 全局编号,编号创建后不再改变,在笔记和提交信息里引用都不会失效。

05.6

跟随系统深浅色

网页端读取系统配色偏好,Android 跟随系统主题。主题属于设备本身,不会同步到其他设备。

06多端

一套数据,
在你常用的地方打开。

网页 · PWA

部署后直接用浏览器访问,无需另装客户端。界面按屏幕自适应:手机单手快速记录,平板双栏,桌面支持拖放与键盘。

随中枢一起提供

Android

原生 Jetpack Compose 客户端,使用 Room 本地存储,和网页端共用同一套 API 与同步协议。

APK · GitHub Releases

中枢 · Docker

Fastify 与 PostgreSQL 组成的单用户中枢。所有设备的数据最终汇集在这里,也只在这里。

ghcr.io/igngserver/taskdock

把今天的事,
放回它该在的位置。

TaskDock 目前处于 2.0 预览阶段,发布的都是预发布版本。用于重要数据前,请先阅读部署与备份文档。