为什么做
备考 PTE 时,错题记在 Notion 里,但光看不会记住。PTE 的填空和听写最后都要靠手打出来,所以练习也应该是打字。
做了什么
在开源打字练习工具 qwerty-learner 的基础上,改成了一个有账号的 PTE 练习站:
- 三种练习:单词、FIB 固定搭配填空、WFD 整句听写。听写按 PTE 的规则判分,忽略大小写和标点。
- 间隔复习:用 FSRS 算法排复习。第一遍打错的题第二天一定会再出现;单词复习是每天必须完成的。
- 自己的题库:FIB 和 WFD 按导入日期分章,每天从 Notion 的错题总结导进来。
- 导入接口:管理员可以生成 API key,用脚本批量导入。
技术
前端是 React + Vite + Jotai,后端是一个 Hono 应用,本地单独跑,在 Vercel 上作为函数运行。数据在 Neon 的 Postgres 里,用 Drizzle 管理迁移,每次部署自动迁移。登录用 better-auth,关闭了公开注册。
原项目把数据存在浏览器的 IndexedDB 里,我把它整个删掉,所有记录都走接口进数据库,这样换设备也能接着练。