基于 Racket 开发一个 To-Do List 工具的初步想法
![[RReminder.excalidraw]]
需求背景
目前市面上的 To-Do List 工具的数据都是保存在云端的,违背了我对数据安全的一些准则。大多工具都是极其复杂,而我只是想要一个最简单的代办任务功能,作为一个极简主义者,完全不能忍受,所以打算基于 Racket 开发一个 To-Do List 工具。经过对多个工具的调研,决定参考 macOS 的 Reminder 的页面和交互逻辑来实现,数据由用户自由选择保存位置,用户可以自由选择第三方同步工具来同步数据,这样不同平台的 RReminder 打开同一个数据都能呈现相同的内容,实现一致的跨平台使用效果。
技术选型
这个 To-Do List 工具完全采用 Racket 语言来实现:
- 前端界面基于 racket/gui 实现
- 后端数据通过 SQLite 保存
界面布局
左侧菜单栏(侧边栏)
- 「搜索」框(筛选功能):显示搜索的关键字相关的任务
- 「今天」按钮(筛选功能):显示当天的待办事项。
- 「计划」按钮(筛选功能):显示所有包含日期的任务,并按照日期远近进行排序。
- 「全部」按钮(筛选功能):显示所有任务,按照列表来显示。
- 「完成」按钮(筛选功能):显示已完成的事项。
- 「我的列表」部分:
- 展示多个任务列表,如「工作」「生活」。
- 允许选择不同的列表,切换查看任务内容。
- 需要提供 添加新列表 的功能(底部的「添加列表」按钮)。
- 右击可以重命名或删除列表名
任务展示区域
- 标题栏显示当前选中的任务列表(如 「工作」)。
- 点击任务展示区空白处或底部新提醒事项可以创建新任务
- 每个任务项包含:
- 复选框(✔ 用于标记完成)。
- 任务文本描述(如「写一本 Racket 书籍」)。
- 任务截止日期(如 2025-04-02)。
- 任务之间有分割线,提升可读性。
底部操作
- 「+ 新提醒事项」 按钮:用于添加新的任务。
- 「+ 添加列表」 按钮:用于创建新的任务分类。