new todo #3

Open
opened 2025-10-15 17:12:04 +08:00 by admin · 2 comments
Owner

根据您的情况,作为独立开发者,我建议您专注于以下核心功能,其他功能可以暂时砍掉:
必须保留的核心功能 (MVP)
Epic 1: 核心认证与用户管理 (简化版)

保留:

本地用户名/密码认证 config-raw.json:67-70
JWT Token 生成与验证
基本用户信息管理

砍掉:

LDAP 集成认证
OpenID Connect 认证
TOTP 双因素认证 config-raw.json:87-90
用户头像管理
复杂的时区设置

Epic 2: 项目管理系统 (简化版)

保留:

项目 CRUD 操作
项目所有权

砍掉:

项目层级结构(父子项目)
项目归档功能
项目颜色和背景图片 config-raw.json:577-616
Link Sharing config-raw.json:62-65
多视图管理(只保留 List 视图)

Epic 3: 任务管理系统 (简化版)

保留:

任务 CRUD 操作
任务标题、描述
任务完成状态
任务截止日期
任务优先级
任务项目内序号(index)自动生成

砍掉:

任务重复功能
任务完成百分比
任务颜色标记
任务封面图片
任务在项目间移动

Epic 15: API 与文档 (基础版)

保留:

RESTful API 设计
基本错误处理
分页支持

砍掉:

Swagger/OpenAPI 文档(可以后期补充)

完全砍掉的功能
Epic 4: 任务协作功能

任务评论系统 config-raw.json:82-85
任务附件管理 config-raw.json:72-75
任务分配(Assignees)
任务标签(Labels)
任务关联关系
任务提醒 config-raw.json:97-100
任务反应(Reactions)

Epic 5: 看板视图系统

整个 Epic 砍掉,只保留简单的列表视图
Epic 6: 高级过滤与搜索

SQL 风格的过滤查询
Typesense 全文搜索
保存的过滤器
只保留最基本的按项目查询任务

Epic 7: 团队协作系统

整个 Epic 砍掉,只支持个人使用
Epic 8: CalDAV 集成

整个 Epic 砍掉 config-raw.json:52-55
Epic 9: 数据迁移系统

整个 Epic 砍掉 config-raw.json:488-561
Epic 10: Webhook 与事件系统

整个 Epic 砍掉 config-raw.json:897-919
Epic 11: 通知系统

整个 Epic 砍掉
Epic 12: 文件与背景管理

整个 Epic 砍掉
Epic 13: 权限与访问控制

简化为只有所有者权限,不支持分享
Epic 14: 配置与系统管理

只保留最基本的数据库配置
简化后的 MVP 工作量估算

Epic 1 (简化版): 约 10-15 人天
Epic 2 (简化版): 约 5-8 人天
Epic 3 (简化版): 约 10-15 人天
Epic 15 (基础版): 约 3-5 人天

总计: 约 28-43 人天
技术栈建议

后端 (Rust):

Web 框架: Axum (更轻量,学习曲线平缓)
ORM: SeaORM (更现代,文档更好)
数据库: 只支持 SQLite (简化部署)
认证: jsonwebtoken crate

前端:

简单的 HTML + JavaScript (不用 Vue.js)
或者使用 Leptos (Rust 全栈)

实现顺序建议

第一阶段 (1-2 周): 用户认证 + 数据库设计
第二阶段 (1-2 周): 项目 CRUD
第三阶段 (2-3 周): 任务 CRUD + index 自动生成
第四阶段 (1 周): 前端基本界面

Notes

这个 MVP 版本只保留了 Vikunja 约 20-25% 的功能,但涵盖了核心价值
数据库表结构可以参考 Vikunja 的设计,但大幅简化字段
建议使用 SQLite 而不是 MySQL/PostgreSQL,减少部署复杂度
后期如果需要,可以逐步添加被砍掉的功能
专注于"能用"而不是"完美",先跑通核心流程
根据您的情况,作为独立开发者,我建议您专注于以下核心功能,其他功能可以暂时砍掉: 必须保留的核心功能 (MVP) Epic 1: 核心认证与用户管理 (简化版) 保留: 本地用户名/密码认证 config-raw.json:67-70 JWT Token 生成与验证 基本用户信息管理 砍掉: LDAP 集成认证 OpenID Connect 认证 TOTP 双因素认证 config-raw.json:87-90 用户头像管理 复杂的时区设置 Epic 2: 项目管理系统 (简化版) 保留: 项目 CRUD 操作 项目所有权 砍掉: 项目层级结构(父子项目) 项目归档功能 项目颜色和背景图片 config-raw.json:577-616 Link Sharing config-raw.json:62-65 多视图管理(只保留 List 视图) Epic 3: 任务管理系统 (简化版) 保留: 任务 CRUD 操作 任务标题、描述 任务完成状态 任务截止日期 任务优先级 任务项目内序号(index)自动生成 砍掉: 任务重复功能 任务完成百分比 任务颜色标记 任务封面图片 任务在项目间移动 Epic 15: API 与文档 (基础版) 保留: RESTful API 设计 基本错误处理 分页支持 砍掉: Swagger/OpenAPI 文档(可以后期补充) 完全砍掉的功能 Epic 4: 任务协作功能 任务评论系统 config-raw.json:82-85 任务附件管理 config-raw.json:72-75 任务分配(Assignees) 任务标签(Labels) 任务关联关系 任务提醒 config-raw.json:97-100 任务反应(Reactions) Epic 5: 看板视图系统 整个 Epic 砍掉,只保留简单的列表视图 Epic 6: 高级过滤与搜索 SQL 风格的过滤查询 Typesense 全文搜索 保存的过滤器 只保留最基本的按项目查询任务 Epic 7: 团队协作系统 整个 Epic 砍掉,只支持个人使用 Epic 8: CalDAV 集成 整个 Epic 砍掉 config-raw.json:52-55 Epic 9: 数据迁移系统 整个 Epic 砍掉 config-raw.json:488-561 Epic 10: Webhook 与事件系统 整个 Epic 砍掉 config-raw.json:897-919 Epic 11: 通知系统 整个 Epic 砍掉 Epic 12: 文件与背景管理 整个 Epic 砍掉 Epic 13: 权限与访问控制 简化为只有所有者权限,不支持分享 Epic 14: 配置与系统管理 只保留最基本的数据库配置 简化后的 MVP 工作量估算 Epic 1 (简化版): 约 10-15 人天 Epic 2 (简化版): 约 5-8 人天 Epic 3 (简化版): 约 10-15 人天 Epic 15 (基础版): 约 3-5 人天 总计: 约 28-43 人天 技术栈建议 后端 (Rust): Web 框架: Axum (更轻量,学习曲线平缓) ORM: SeaORM (更现代,文档更好) 数据库: 只支持 SQLite (简化部署) 认证: jsonwebtoken crate 前端: 简单的 HTML + JavaScript (不用 Vue.js) 或者使用 Leptos (Rust 全栈) 实现顺序建议 第一阶段 (1-2 周): 用户认证 + 数据库设计 第二阶段 (1-2 周): 项目 CRUD 第三阶段 (2-3 周): 任务 CRUD + index 自动生成 第四阶段 (1 周): 前端基本界面 Notes 这个 MVP 版本只保留了 Vikunja 约 20-25% 的功能,但涵盖了核心价值 数据库表结构可以参考 Vikunja 的设计,但大幅简化字段 建议使用 SQLite 而不是 MySQL/PostgreSQL,减少部署复杂度 后期如果需要,可以逐步添加被砍掉的功能 专注于"能用"而不是"完美",先跑通核心流程
Author
Owner

根据 Vikunja 项目的代码库分析,我无法直接给出每个 Epic 的精确人天估算,因为代码库中没有包含项目管理或工时统计的相关数据。

不过,我可以基于 Vikunja 项目的实际开发历史和代码复杂度,给您一些参考性的估算建议:
基于 Vikunja 开发历史的参考

从 CHANGELOG 可以看到,Vikunja 是一个长期演进的项目,经历了多年的开发。 主要版本的发布周期通常在几个月左右,这说明即使是经验丰富的团队,完成一个完整的功能模块也需要相当的时间投入。
Epic 复杂度分级估算

基于代码量和功能复杂度,我将 15 个 Epic 分为三个等级:
高复杂度 Epic (建议 20-40 人天)

Epic 1: 核心认证与用户管理 - 涉及多种认证方式(本地、LDAP、OpenID Connect)、JWT、TOTP 等安全敏感功能
Epic 3: 任务管理系统 - 核心业务逻辑,包含复杂的任务状态管理、重复任务、项目间移动等
Epic 6: 高级过滤与搜索 - 需要实现 SQL 风格的查询解析器和 Typesense 集成 en.json:454-503
Epic 8: CalDAV 集成 - 需要深入理解 CalDAV 协议和时区处理

中等复杂度 Epic (建议 10-20 人天)

Epic 2: 项目管理系统 - 包含层级结构、视图管理等
Epic 4: 任务协作功能 - 评论、附件、标签等多个子功能
Epic 5: 看板视图系统 - 拖拽逻辑和位置计算
Epic 7: 团队协作系统 - 权限管理相对复杂
Epic 10: Webhook 与事件系统 - 事件驱动架构设计
Epic 13: 权限与访问控制 - RBAC 实现

低复杂度 Epic (建议 5-15 人天)

Epic 9: 数据迁移系统 - 主要是数据转换逻辑
Epic 11: 通知系统 - 相对独立的功能模块
Epic 12: 文件与背景管理 - 文件上传和存储
Epic 14: 配置与系统管理 - 配置管理相对简单
Epic 15: API 与文档 - 贯穿整个项目,可以与其他 Epic 并行

总体估算

最小可行产品 (MVP): Epic 1-3 + Epic 15 = 约 60-120 人天
完整功能版本: 所有 15 个 Epic = 约 200-350 人天

影响因素

实际工时会受以下因素影响:

团队经验: Rust 生态的熟悉程度(Actix-web/Axum、Diesel/SeaORM)
代码质量要求: 测试覆盖率、文档完善度
技术债务: 是否需要重构和优化
学习成本: 理解 Vikunja 的业务逻辑和设计决策
根据 Vikunja 项目的代码库分析,我无法直接给出每个 Epic 的精确人天估算,因为代码库中没有包含项目管理或工时统计的相关数据。 不过,我可以基于 Vikunja 项目的实际开发历史和代码复杂度,给您一些参考性的估算建议: 基于 Vikunja 开发历史的参考 从 CHANGELOG 可以看到,Vikunja 是一个长期演进的项目,经历了多年的开发。 主要版本的发布周期通常在几个月左右,这说明即使是经验丰富的团队,完成一个完整的功能模块也需要相当的时间投入。 Epic 复杂度分级估算 基于代码量和功能复杂度,我将 15 个 Epic 分为三个等级: 高复杂度 Epic (建议 20-40 人天) Epic 1: 核心认证与用户管理 - 涉及多种认证方式(本地、LDAP、OpenID Connect)、JWT、TOTP 等安全敏感功能 Epic 3: 任务管理系统 - 核心业务逻辑,包含复杂的任务状态管理、重复任务、项目间移动等 Epic 6: 高级过滤与搜索 - 需要实现 SQL 风格的查询解析器和 Typesense 集成 en.json:454-503 Epic 8: CalDAV 集成 - 需要深入理解 CalDAV 协议和时区处理 中等复杂度 Epic (建议 10-20 人天) Epic 2: 项目管理系统 - 包含层级结构、视图管理等 Epic 4: 任务协作功能 - 评论、附件、标签等多个子功能 Epic 5: 看板视图系统 - 拖拽逻辑和位置计算 Epic 7: 团队协作系统 - 权限管理相对复杂 Epic 10: Webhook 与事件系统 - 事件驱动架构设计 Epic 13: 权限与访问控制 - RBAC 实现 低复杂度 Epic (建议 5-15 人天) Epic 9: 数据迁移系统 - 主要是数据转换逻辑 Epic 11: 通知系统 - 相对独立的功能模块 Epic 12: 文件与背景管理 - 文件上传和存储 Epic 14: 配置与系统管理 - 配置管理相对简单 Epic 15: API 与文档 - 贯穿整个项目,可以与其他 Epic 并行 总体估算 最小可行产品 (MVP): Epic 1-3 + Epic 15 = 约 60-120 人天 完整功能版本: 所有 15 个 Epic = 约 200-350 人天 影响因素 实际工时会受以下因素影响: 团队经验: Rust 生态的熟悉程度(Actix-web/Axum、Diesel/SeaORM) 代码质量要求: 测试覆盖率、文档完善度 技术债务: 是否需要重构和优化 学习成本: 理解 Vikunja 的业务逻辑和设计决策
Author
Owner

Vikunja 系统功能概览

Vikunja 是一个开源的待办事项和项目管理应用,支持多种功能特性。 publiccode.yml:36-41
Epic 拆分建议
Epic 1: 核心认证与用户管理

功能范围: info.go:56-74

本地用户名/密码认证
LDAP 集成认证
OpenID Connect 认证
用户注册功能
JWT Token 生成与验证
API Token 管理 en.json:158-180
用户头像管理
用户时区设置 config-raw.json:76-79
TOTP 双因素认证 info.go:96

Epic 2: 项目管理系统

功能范围: info.go:93

项目 CRUD 操作
项目层级结构(父子项目)
项目归档功能
项目颜色和背景图片
项目标识符(identifier)生成
项目位置排序
项目分享(Link Sharing) LinkSharing.vue:239-268
项目视图管理(List、Kanban、Gantt、Table)

Epic 3: 任务管理系统

功能范围:

任务 CRUD 操作
任务标题、描述、优先级
任务完成状态和完成时间
任务截止日期、开始日期、结束日期
任务重复功能(repeat_after, repeat_mode)
任务完成百分比
任务颜色标记
任务项目内序号(index)自动生成
任务在项目间移动
任务封面图片

Epic 4: 任务协作功能

功能范围: info.go:100

任务评论系统
任务附件管理 info.go:95
任务分配(Assignees)
任务标签(Labels)系统
任务关联关系
任务提醒(Reminders) info.go:98
任务反应(Reactions) swagger.yaml:1645-1680

Epic 5: 看板视图系统

功能范围:

Bucket(看板列)管理
任务在 Bucket 间拖拽
任务位置(position)管理
多项目视图的 Bucket 独立性

Epic 6: 高级过滤与搜索

功能范围: en.json:455-504

SQL 风格的过滤查询语法
支持的过滤字段(done, priority, dueDate, assignees, labels 等)
比较操作符(=, !=, >, <, >=, <=, like, in, not in)
逻辑操作符(AND, OR, 括号分组)
Date Math 相对日期表达式
保存的过滤器(Saved Filters)
任务 # 号搜索
Typesense 全文搜索集成

Epic 7: 团队协作系统

功能范围: info.go:103

团队创建与管理
团队成员管理
团队对项目的访问权限
公共团队功能
OpenID 自动团队创建

Epic 8: CalDAV 集成

功能范围: info.go:97

CalDAV 协议支持 en.json:121-131
CalDAV Token 管理
任务 UID 字段
与日历客户端同步
时区转换处理

Epic 9: 数据迁移系统

功能范围: info.go:104-146

Vikunja File 格式导入
TickTick 迁移
Todoist 迁移
Trello 迁移
Microsoft To Do 迁移
迁移状态检查

Epic 10: Webhook 与事件系统

功能范围: info.go:102

事件驱动架构
Webhook 配置与管理
任务创建/更新/删除事件
项目创建/更新/删除事件
评论创建事件
HTTP POST 通知到外部服务

Epic 11: 通知系统

功能范围:

邮件通知
应用内通知
任务提醒邮件
逾期任务通知
评论通知

Epic 12: 文件与背景管理

功能范围: info.go:148-155

文件上传与存储
最大文件大小限制 info.go:94
项目背景图片
Unsplash 背景集成
背景模糊哈希(BlurHash)
图片自动调整大小(最大 4K)

Epic 13: 权限与访问控制

功能范围:

基于角色的访问控制(Read, Write, Admin)
项目所有权
团队权限管理
Link Share 权限
API Token 权限范围(Scopes)

Epic 14: 配置与系统管理

功能范围: config-raw.json:31-120

系统配置管理
功能开关(Feature Flags)
时区配置
邮件服务配置
数据库配置(MySQL/PostgreSQL/SQLite)
Demo 模式
用户删除功能 info.go:99
MOTD(Message of the Day)

Epic 15: API 与文档

功能范围: routes.go:17-36

RESTful API 设计
Swagger/OpenAPI 文档
分页支持
错误处理标准化
API 版本控制(/api/v1)

技术架构建议

基于 Vikunja 的 Go + Vue.js 架构,使用 Rust 复现时建议:

后端技术栈:

Web 框架: Actix-web 或 Axum(类似 Echo)
ORM: Diesel 或 SeaORM(类似 XORM)
认证: jsonwebtoken crate
数据库: 支持 PostgreSQL/MySQL/SQLite

前端技术栈:

可继续使用 Vue.js 或改用 Rust WASM(Yew/Leptos)
状态管理保持 Pinia
API 客户端使用 reqwest

Notes

Vikunja 的架构是前后端分离的,后端提供 RESTful API,前端是 SPA routes.go:1-52
系统支持多种部署方式:Docker、二进制文件、桌面应用 publiccode.yml:9-16
数据库设计中,时间字段使用 DATETIME 类型,统一存储 UTC 时间
系统使用事件驱动架构处理 Webhook、通知和搜索索引
建议按照 Epic 的优先级顺序实现:先核心功能(Epic 1-3),再协作功能(Epic 4-7),最后集成功能(Epic 8-15)
Vikunja 系统功能概览 Vikunja 是一个开源的待办事项和项目管理应用,支持多种功能特性。 publiccode.yml:36-41 Epic 拆分建议 Epic 1: 核心认证与用户管理 功能范围: info.go:56-74 本地用户名/密码认证 LDAP 集成认证 OpenID Connect 认证 用户注册功能 JWT Token 生成与验证 API Token 管理 en.json:158-180 用户头像管理 用户时区设置 config-raw.json:76-79 TOTP 双因素认证 info.go:96 Epic 2: 项目管理系统 功能范围: info.go:93 项目 CRUD 操作 项目层级结构(父子项目) 项目归档功能 项目颜色和背景图片 项目标识符(identifier)生成 项目位置排序 项目分享(Link Sharing) LinkSharing.vue:239-268 项目视图管理(List、Kanban、Gantt、Table) Epic 3: 任务管理系统 功能范围: 任务 CRUD 操作 任务标题、描述、优先级 任务完成状态和完成时间 任务截止日期、开始日期、结束日期 任务重复功能(repeat_after, repeat_mode) 任务完成百分比 任务颜色标记 任务项目内序号(index)自动生成 任务在项目间移动 任务封面图片 Epic 4: 任务协作功能 功能范围: info.go:100 任务评论系统 任务附件管理 info.go:95 任务分配(Assignees) 任务标签(Labels)系统 任务关联关系 任务提醒(Reminders) info.go:98 任务反应(Reactions) swagger.yaml:1645-1680 Epic 5: 看板视图系统 功能范围: Bucket(看板列)管理 任务在 Bucket 间拖拽 任务位置(position)管理 多项目视图的 Bucket 独立性 Epic 6: 高级过滤与搜索 功能范围: en.json:455-504 SQL 风格的过滤查询语法 支持的过滤字段(done, priority, dueDate, assignees, labels 等) 比较操作符(=, !=, >, <, >=, <=, like, in, not in) 逻辑操作符(AND, OR, 括号分组) Date Math 相对日期表达式 保存的过滤器(Saved Filters) 任务 # 号搜索 Typesense 全文搜索集成 Epic 7: 团队协作系统 功能范围: info.go:103 团队创建与管理 团队成员管理 团队对项目的访问权限 公共团队功能 OpenID 自动团队创建 Epic 8: CalDAV 集成 功能范围: info.go:97 CalDAV 协议支持 en.json:121-131 CalDAV Token 管理 任务 UID 字段 与日历客户端同步 时区转换处理 Epic 9: 数据迁移系统 功能范围: info.go:104-146 Vikunja File 格式导入 TickTick 迁移 Todoist 迁移 Trello 迁移 Microsoft To Do 迁移 迁移状态检查 Epic 10: Webhook 与事件系统 功能范围: info.go:102 事件驱动架构 Webhook 配置与管理 任务创建/更新/删除事件 项目创建/更新/删除事件 评论创建事件 HTTP POST 通知到外部服务 Epic 11: 通知系统 功能范围: 邮件通知 应用内通知 任务提醒邮件 逾期任务通知 评论通知 Epic 12: 文件与背景管理 功能范围: info.go:148-155 文件上传与存储 最大文件大小限制 info.go:94 项目背景图片 Unsplash 背景集成 背景模糊哈希(BlurHash) 图片自动调整大小(最大 4K) Epic 13: 权限与访问控制 功能范围: 基于角色的访问控制(Read, Write, Admin) 项目所有权 团队权限管理 Link Share 权限 API Token 权限范围(Scopes) Epic 14: 配置与系统管理 功能范围: config-raw.json:31-120 系统配置管理 功能开关(Feature Flags) 时区配置 邮件服务配置 数据库配置(MySQL/PostgreSQL/SQLite) Demo 模式 用户删除功能 info.go:99 MOTD(Message of the Day) Epic 15: API 与文档 功能范围: routes.go:17-36 RESTful API 设计 Swagger/OpenAPI 文档 分页支持 错误处理标准化 API 版本控制(/api/v1) 技术架构建议 基于 Vikunja 的 Go + Vue.js 架构,使用 Rust 复现时建议: 后端技术栈: Web 框架: Actix-web 或 Axum(类似 Echo) ORM: Diesel 或 SeaORM(类似 XORM) 认证: jsonwebtoken crate 数据库: 支持 PostgreSQL/MySQL/SQLite 前端技术栈: 可继续使用 Vue.js 或改用 Rust WASM(Yew/Leptos) 状态管理保持 Pinia API 客户端使用 reqwest Notes Vikunja 的架构是前后端分离的,后端提供 RESTful API,前端是 SPA routes.go:1-52 系统支持多种部署方式:Docker、二进制文件、桌面应用 publiccode.yml:9-16 数据库设计中,时间字段使用 DATETIME 类型,统一存储 UTC 时间 系统使用事件驱动架构处理 Webhook、通知和搜索索引 建议按照 Epic 的优先级顺序实现:先核心功能(Epic 1-3),再协作功能(Epic 4-7),最后集成功能(Epic 8-15)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/memos#3
No description provided.