Reciter
让程序为你接管遗忘曲线,提供一目了然的单词复习周期。
技术栈
Node.js/Browser
-
vuejs
-
koa
debug
使用 vscode 调试,启动 beckend 与 frontend,这两者均会 watch 文件变化,一切修改均会进行热更新。
build
npm run build
start
npm run start
后端
根据艾宾浩斯记忆曲线,我们应该在:5 分钟、30 分钟、12小时、1 天、2 天、4 天、7 天、15 天、1 个月、3 个月、6 个月进行复习。
在顶层,我们应该使用一个人标识,用来区分用户,每个用户都有独立的单词库。
interface {
_id: ObjectID //
word: string // 单词
note: string // 翻译、例句、笔记等
startTime: Date // 首次背诵时间
state: number // 当前背诵阶段,用来计算下一次背诵时间,在后端代码中保证
user: string // 用户名,区分用户
}
前端
最上方要有一搜索功能,用来过滤单词,后端可以用 trie 实现。
最上方右侧有一添加按钮用来添加新单词。
下方一状态栏,显示一共有多少单词,当前有多少单词需要复习。
首次进入应该提示用户输入单词库标识,来加载云端单词数据库,如果从未创建过则创建,若创建过则直接使用。
下面是单词列表。
每个单词主体包含这几个部分:
-
最左侧是加粗加大的英文
-
向右是该单词的下一阶段最佳复习时间
-
最右侧有一按钮用于确认当次复习
-
点击后展开 note 部分,在展开的部分提供四个按钮
-
回到上一复习阶段
-
跳到下一复习阶段
-
重置该单词的学习状态到最初状态
-
修改单词信息(word 和 note 部分)
-
单词应该使用 infinity 滚动的方式显示,排序按照下次最近一次复习时间进行排序。
当我们确认某次复习后,按钮应该在到达下次复习时间之前保持 disable,且视图应该重新排序。