A Simple To-Do App Design
最近使用 MS Todo 的感觉居然还不错,成功帮我克服了电子 GTD 恐惧症。虽然也许只是因为这次定的 task 比较 manageable,但在查看一个月前待办事项时发现自己已经写下详细步骤的那一刻,我承认心中有泛上一丝(来自自己的)温暖。我想,有些笔记的确需要以轻量 todo task 的形式存在。它们存在于日常工作流和知识体系之外,但又是不可或缺的参考。
美中不足的是,MS Todo 不会给你任何导出选项。而我理想中的 todo app 最好是由两部分组成:结构化数据 (data) +显示数据的应用本体 (view) 。按我的理解,这应该算是 JAM 架构,但不确定理解得对不对……
因此,在这里结合 MS Todo 的使用体验和 runic 的语法,自行设计一个 todo app 的草稿。
Data
Markup
- Indent matters!
- 本来想用 project 和 tag 两个维度,但好像没什么必要,project 只是个自定义视图而已。
- Project 使用 conjunctive normal form 而不是正则来做筛选。
- It’s really not meant for a tree structure, so don’t expect sub-tasks. We only have steps. Maybe I’ll change their runes later to distinguish those from tasks.
[ ] Task Name
- Note for task
- A second note
% url://attachment
@ 2020-02-20 09:00 (due time)
@ person
@ location
! 2020-02-20 08:00 (alert time)
# hashtag
# another tag
[ ] step
[x] done step
; TODO repeat scheme
/ TODO is there a need for projects?
*
**
*** (priority)
[-] Archived Task
[/] Cancelled Task
[x] Done Task
[.] WIP (steps finished)
[:] WAD (work-almost-done)
/ Project Name
| include1 & include2 ~ exclude & etc
| another CNF clause
> 0000-00-00 00:00 start time TODO dynamic date?
< 2020-02-20 12:00 end time
Json representation
This part is very specific to implementation (e.g. in js, godot, …), so I’ll just provide a few examples. In addition to the fields listed above, we might have:
- hashes / id system unique to each task
- add “modality” – whether this task pertains to a certain aspect of sense or perception, like visual, audio, textual, …
- calendar – link tasks to dates / a period of time
- custom productivity records
View
- ⭐ basic CRUD of tasks and fields
- ⭐ smart views / scopes (day, month, week, future x days, …)
- link to another task (so we need to give them hashes!)
- add to calendar
- statistics and charts
- ⭐ sorting, searching, etc.
- ⭐ list by project and optimize that at runtime
- custom productivity calculator
⭐ – MVP features