Manage My Damn Life 介绍与选型指南
Manage My Damn Life(MMDL)v0.10.0 自托管 CalDAV 任务与日历 Web 前端:软件概述、Next.js+Sequelize+tsdav 架构、功能特性、快速开始、适用限制与 Vikunja/Nextcloud Tasks/Todoist/OmniFocus 量化选型对比(联网溯源,查询日期 2026-11-02)
Manage My Damn Life 介绍与选型指南
目标:回答「Manage My Damn Life(MMDL)是什么、架构长什么样、能干什么、适合谁、和同类方案怎么选」。本文为纯联网溯源文档,全部事实来自官方仓库、官方文档与公开徽章数据,查询日期 2026-11-02;不含本地实测内容(部署与配置实测见本专栏其余篇目)。
一、环境信息(信息源与查询日期)
本文所有结论均来自以下公开渠道,查询日期统一为 2026-11-02(北京时间):
- 项目主页:
https://intri.in/manage-my-damn-life/(Intri 个人项目站) - 源码仓库:
https://github.com/intri-in/manage-my-damn-life-nextjs(GitHub,main 分支 README 与 docs 目录) - 发布记录:
https://github.com/intri-in/manage-my-damn-life-nextjs/releases.atom(Atom 订阅源) - 官方安装/配置文档:仓库内
docs/install/目录(Docker、Dockerless、Configuration 三类指南) - 社区活跃度徽章:
img.shields.io的 stars / license / contributors / commit-activity / last-commit 徽章(GitHub API 限流时的替代取证渠道) - 商业方案定价:
https://www.todoist.com/pricing、https://www.omnigroup.com/omnifocus/buy/ - 对比组件:
https://github.com/go-vikunja/vikunja、https://github.com/nextcloud/tasks
二、软件概述
Manage My Damn Life(简称 MMDL)是一个自托管(self-hosted)的 CalDAV 任务与日历管理 Web 前端。它自身不存储任务数据,而是作为 CalDAV 服务器的图形化客户端:你把任务、日程存在自己的 CalDAV 服务器(Nextcloud、Radicale、Baikal 等)上,MMDL 提供列表、甘特图、日历等多视图的浏览与管理界面,并支持多用户、多 CalDAV 账号。官方 README 自述:「Manage my Damn Life (MMDL) is a self hosted front end for managing your CalDAV tasks and calendars」,并明确当前处于 beta 阶段,生产数据需谨慎。
关键身份信息(均取自官方仓库,查询日期 2026-11-02):
| 项目 | 值 |
|---|---|
| 仓库 | intri-in/manage-my-damn-life-nextjs(GitHub 组织 intri-in,即 Intri 个人项目) |
| 最新稳定版 | v0.10.0(2026-09-13 发布,releases.atom 实测返回) |
| 许可证 | GPL-3.0(shields.io license 徽章) |
| 社区规模 | GitHub stars 642、contributors 10、commit 活跃度 144 次/年、最后提交 2026-09(shields.io 徽章) |
| 技术栈 | Next.js(React/TypeScript)单体 Web 应用 + Sequelize ORM + MySQL/PostgreSQL/SQLite + tsdav(CalDAV 客户端库) |
| 官方镜像 | Docker Hub intriin/mmdl:latest |
| 本地化 | 通过 Weblate(hosted.weblate.org/projects/mmdl-manage-my-damn-life/)管理翻译 |
💡 技术拓展:「任务/日历同步协议」不止 CalDAV 一种。常见方案对比——
协议/方式 标准 特点 典型服务端/客户端 CalDAV RFC 4791(基于 WebDAV) 开放标准,VTODO/VEVENT 对象,多端同步 Nextcloud、Radicale、Baikal;客户端 DAVx5、Tasks.org、Thunderbird Webcal(订阅型 CalDAV) RFC 8144 只读订阅他人日历 各 CalDAV 客户端 CardDAV RFC 6351 通讯录同步(与 CalDAV 配套但管联系人) 同上 私有云 API 无标准 功能强但数据锁定 Todoist API、OmniFocus Web 同步 MMDL 选择 CalDAV(经 tsdav 库实现),因此天然与任何标准 CalDAV 服务器互通,数据主权在用户自己手里。
三、核心架构
依据官方 README、docs/install/ 文档与仓库源码结构(package.json、config/config.js、src/pages/api/ 目录,均为公开可查内容):
- 单体 Next.js 应用:前端页面(任务视图/日历视图/甘特视图/设置)与服务端 API 路由(
/api/install、/api/login、/api/users/register、/api/v2/caldav/register、/api/v2/calendars/refresh等)同进程运行,npm run build后由next start(官方镜像内为node server.js)监听 3000 端口。 - 双层存储:
- 服务端数据库(Sequelize ORM):存用户账号、会话(ssid)、CalDAV 账号凭据(AES 加密)、日历/事件缓存、过滤器、标签等;
DB_DIALECT支持mysql/postgres/sqlite三种方言。 - 浏览器端 IndexedDB(Dexie):缓存任务与同步状态,v0.10.0 引入 Sync Manager 统一管理对 CalDAV 服务器的读写与冲突处理。
- 服务端数据库(Sequelize ORM):存用户账号、会话(ssid)、CalDAV 账号凭据(AES 加密)、日历/事件缓存、过滤器、标签等;
- CalDAV 访问层:通过
tsdav库与远端 CalDAV 服务器通信(PROPFIND/REPORT/PUT 等),官方 README 明确「凡 tsdav 支持的服务器均可用」,并已在 Nextcloud、Radicale、Baikal 上测试;Google Calendar 经 OAuth 接入。 - 认证体系:内置账号体系(注册/登录/OTP 找回密码,SMTP 发信),或通过 NextAuth.js 接入第三方 OAuth(Keycloak、Google、Authentik);官方声明未来版本(约 v1.0.0)将以第三方认证为默认。
- 部署形态:官方推荐 Docker Compose(应用 + MySQL 两服务),也支持裸机 Node.js 源码安装(
npm install → npm run migrate → npm run build → npm run start)。
四、功能特性
摘自官方 README「Features」与 v0.10.0 Release Notes(查询日期 2026-11-02):
- 任务管理:支持子任务(多级)、截止日期、完成状态、描述、重复规则(recurrence)等 RFC 5545 VTODO 字段(官方声明目标是覆盖全部字段)。
- 日历事件管理:VEVENT 的创建与管理。
- 多账号模型:一个 MMDL 实例支持多个用户账号,每个用户可挂多个 CalDAV 账号。
- 多视图:列表视图、甘特图视图(Gantt)、日历视图三态切换。
- 自定义过滤器:按条件创建任务过滤器,组织自己的视图。
- Sync Manager 与冲突处理(v0.10.0 新增):日历与 Webcal 订阅的同步管理,新增 Conflict Manager 处理同步冲突。
- OAuth 支持:CalDAV 账号可用 OAuth 认证(当前支持 Google Calendar 路线,官方另有 Keycloak/Authentik 配置指南)。
- 桌面优先:README 自述「Responsive-ish」,移动端建议配合 JTX Boards、OpenTasks 等原生 CalDAV 客户端使用。
- 官方规划中:RFC 5545 全字段支持、更灵活的可定制视图、任务拖拽、外部插件机制。
五、快速开始(最小可用示例,官方文档口径)
以下为官方 docs/install/ 给出的两条最小路径(原文摘录,非本地实测;逐条实测命令与回显见本专栏部署篇):
路径 A:Docker Compose(官方推荐)
# 1. 获取官方 docker-compose.yml.sample 并复制为 docker-compose.yml
# 2. 下载官方 sample 配置文件
curl https://raw.githubusercontent.com/intri-in/manage-my-damn-life-nextjs/main/sample.env.local > .env.local
# 3. 修改 .env.local 中数据库与 AES_PASSWORD 后启动
docker compose up
# 4. 浏览器打开 http://localhost:3000/install 完成安装向导
路径 B:源码安装(Node.js)
git clone https://github.com/intri-in/manage-my-damn-life-nextjs.git
cd manage-my-damn-life-nextjs
npm install
cp sample.env.local .env.local # 修改数据库连接等参数
npm run migrate # Sequelize 建表迁移
npm run build
npm run start # 或 nohup npm run start &
# 访问 http://localhost:3000/install,注册账号后到 /accounts/caldav 添加第一个 CalDAV 账号
官方镜像为 Docker Hub intriin/mmdl:latest,compose 会同时拉起一个 MySQL 服务作为后端数据库。
六、适用场景与限制
适合:
- 已自建 CalDAV 服务器(Nextcloud/Radicale/Baikal),想要一个浏览器端、多端一致的桌面级任务/日历管理界面的个人或小团队;
- 重视数据主权:任务数据全部留在自己的 CalDAV 服务器上,MMDL 只是前端;
- 需要多人共用一套 MMDL、各自绑定自己的 CalDAV 账号(家庭/小组织共享日历 + 任务);
- 想要甘特图视角管理 GTD 类任务列表的用户。
限制(官方自述与文档可证):
- beta 状态:README 明确提醒生产数据谨慎;v1.0.0 之前认证体系将切换为第三方 OAuth 优先,存在配置迁移成本;
- 桌面优先:无官方移动客户端,移动端需另配 JTX Boards/OpenTasks 等 CalDAV 应用;
- 依赖链较长:需要 Node.js 运行时 + MySQL/PostgreSQL 数据库 + 一台 CalDAV 服务器三件套(SQLite 方言可用于轻量试用);
- 无集群方案:单体 Node 应用,官方未提供高可用/水平扩展文档;
- 社区规模小:contributors 约 10 人、年提交 144 次(2026-11-02 徽章),问题响应依赖个人维护者 Intri。
七、同类选型对比
对比维度量化数据均来自公开仓库与 shields.io 徽章,查询日期 2026-11-02:
| 方案 | 定位 | 开源/许可 | 最新稳定版 | 社区热度 | 部署形态 | 数据归属/协议 | 移动端 |
|---|---|---|---|---|---|---|---|
| MMDL 0.10.0 | 自托管 CalDAV 任务+日历 Web 前端 | GPL-3.0 | v0.10.0(2026-09-13) | 642★ / 10 人 / 144 提交/年 | Docker Compose 或 Node 源码 + MySQL | 自有 CalDAV 服务器(RFC 4791) | 无官方端,配 DAVx5/Tasks.org |
| Vikunja | 自托管任务管理(列表/看板/甘特,自带后端存储) | AGPL-3.0 | v2.7.1 | 5.9k★ | 单二进制/Compose,自带数据库 | 自有服务器;支持 CalDAV 同步(beta) | 官方 Web/App |
| Nextcloud Tasks | Nextcloud 生态内的任务应用 | AGPL-3.0 | v0.18.1 | 710★ | 必须整套 Nextcloud | Nextcloud CalDAV | DAVx5 生态 |
| Todoist | 商业 SaaS 任务管理 | 闭源 | SaaS 持续发布 | —(商业) | 无需部署 | 厂商云(私有 API) | 全平台官方 App |
| OmniFocus | 商业 Apple 生态 GTD 旗舰 | 闭源 | v4(Web 版 2026-09-28) | —(商业) | 无需部署 | Omni 云同步(私有) | 仅 Apple 系 |
价格参考(2026-11-02 官网):Todoist Pro 约 $60/年($7/月),免费版限 5 个项目;OmniFocus 4 订阅 $99.99/年($9.99/月),或 Pro 永久授权 $149.99,Web 附加订阅 $49.99/年。自托管方案软件免费,成本是服务器与运维时间。
版本节奏与兼容性:MMDL releases 从 v0.7.1 到 v0.10.0 约每季度 23 版(2026-0609 密集发版),无 LTS 概念;官方兼容矩阵为 Nextcloud/Radicale/Baikal + tsdav 支持面,MySQL/PostgreSQL/SQLite 三种方言。Vikunja 发版更密、社区大一个数量级;Nextcloud Tasks 绑定 Nextcloud 大版本节奏。
选型建议(如果…则…):
- 如果你已有 CalDAV 服务器、主要用桌面浏览器管理任务与日历、看重数据完全在自己手里 → MMDL 是当前少数专注「CalDAV 图形前端」的开源选择;
- 如果你要独立的任务系统(不依赖 CalDAV 服务器)、看板/甘特/团队共享更重 → 选 Vikunja;
- 如果你已在跑 Nextcloud → 直接启用 Tasks 应用,链路最短;
- 如果不想运维、接受订阅与云端存储 → Todoist(跨平台)或 OmniFocus(Apple 深度 GTD);
- 如果移动端体验优先且坚持自托管 → MMDL 不适合做移动端,应配 DAVx5/Tasks.org 客户端 + 任意 CalDAV 服务器,MMDL 仅作为桌面 Web 补充。
八、参考链接
- MMDL 项目主页:https://intri.in/manage-my-damn-life/ (查询日期 2026-11-02)
- MMDL GitHub 仓库与 README:https://github.com/intri-in/manage-my-damn-life-nextjs (查询日期 2026-11-02)
- MMDL Releases(v0.10.0):https://github.com/intri-in/manage-my-damn-life-nextjs/releases (查询日期 2026-11-02)
- 官方安装文档:https://github.com/intri-in/manage-my-damn-life-nextjs/tree/main/docs/install (查询日期 2026-11-02)
- tsdav(CalDAV 客户端库)支持面:https://tsdav.vercel.app/docs/ (查询日期 2026-11-02)
- Weblate 翻译项目:https://hosted.weblate.org/projects/mmdl-manage-my-damn-life/ (查询日期 2026-11-02)
- Vikunja:https://github.com/go-vikunja/vikunja (查询日期 2026-11-02)
- Nextcloud Tasks:https://github.com/nextcloud/tasks (查询日期 2026-11-02)
- Todoist 定价:https://www.todoist.com/pricing (查询日期 2026-11-02)
- OmniFocus 购买页:https://www.omnigroup.com/omnifocus/buy/ (查询日期 2026-11-02)