Skip to content

整体构思

1. 项目定位

这是一个面向个人英语学习的轻量级 Web 应用。

核心目标不是做传统的“单词背诵”或者“番茄钟”,而是:

把用户平时遇到的、觉得值得记住的英语句子保存下来,并根据用户实际掌握程度,自动安排后续复习。(英语句子间隔复习系统)

用户可以记录:

  • 英语句子
  • 中文含义
  • 发音/音标
  • 单词或短语解释
  • 句子来源
  • 自己的备注
  • 录音(后续可扩展)

系统根据用户每次复习的表现,动态决定下一次什么时候复习。


2. 核心使用场景

例如用户在 YouTube、电影、文章或者日常交流中遇到:

I was wondering if you could help me.

用户觉得这句话很好,于是点击「加入复习」。

系统保存这句话。

之后系统不会要求用户每天把所有句子重新看一遍,而是根据掌握程度安排:

第一次学习
    ↓
第一次复习
    ↓
用户评价:记得很清楚
    ↓
延长复习间隔
    ↓
第二次复习
    ↓
用户评价:有点忘了
    ↓
缩短复习间隔
    ↓
再次复习

最终形成一个个人化的英语句子知识库。


3. 产品核心理念

3.1 不要求每天全部复习

例如用户拥有 500 个句子,今天系统可能只安排 12 个,明天 8 个,后天 15 个。

系统根据复习时间和掌握程度动态生成 Review Queue。


4. 复习系统

每一个句子都有自己的复习状态:

sentence_id
    ↓
学习次数
    ↓
掌握程度
    ↓
当前间隔
    ↓
下一次复习时间

状态可以设计为:

  • NEW:新句子
  • LEARNING:学习中
  • REVIEW:复习中
  • MATURE:已经熟练

5. 复习评价

每次复习结束后提供简单评价:

评价 含义
Again 完全忘记
Hard 想了一会儿才想起来
Good 正常记得
Easy 非常熟悉

系统根据评价计算下一次复习时间。


6. 间隔重复算法

第一版不需要直接复制复杂的 Anki 算法,可以先实现简单版本:

第一次:10分钟
第二次:1天
第三次:3天
第四次:7天
第五次:14天
第六次:30天
第七次:60天

如果选择 Again,则降低间隔;如果选择 Easy,则明显增加间隔。

后续可以升级为更加成熟的 Spaced Repetition 算法。


7. Web 页面设计

7.1 响应式设计

必须支持:

  • Desktop
  • Laptop
  • iPad
  • Android 手机
  • iPhone

采用 Responsive Design。

不能简单地把 PC 页面缩小到手机上。

手机端需要针对触摸操作重新调整:

  • 导航
  • 卡片
  • 按钮
  • 间距
  • 字体
  • 信息层级

8. UI 风格

整体风格:

简洁、现代、安静、偏学习工具,而不是娱乐 App。

避免:

  • 大量渐变
  • 大量动画
  • 过多颜色
  • 复杂 Dashboard
  • 花哨卡片
  • 不必要的装饰

推荐:

白色 / 浅灰背景
+
少量强调色
+
圆角卡片
+
清晰字体
+
充足留白

可以参考现代 SaaS / Productivity Tool 的设计语言。


9. 页面结构

第一版建议包含以下核心页面。

Dashboard

显示:

  • 今日待复习数量
  • 新句子数量
  • Learning 数量
  • Review 数量
  • 已完成数量
  • 学习连续天数(后续可选)

核心操作:

[ Start Review ]

Review

一次显示一个英语句子:

I was wondering if you could help me.

点击:

[ Show Answer ]

显示:

不知道你是否可以帮我一下。

/aɪ wəz ˈwʌndərɪŋ ɪf.../

然后:

Again     Hard     Good     Easy

Sentence Library

支持:

  • 搜索
  • 分类
  • 标签
  • 排序
  • 编辑
  • 删除
  • 查看学习状态
  • 查看下次复习时间

Add Sentence

快速添加:

English Sentence
________________________

Chinese Meaning
________________________

Pronunciation
________________________

Notes
________________________

Tags
________________________

[ Save ]

10. 用户认证

因为数据不能只保存在浏览器 LocalStorage 中,所以需要线上数据存储。

第一版支持:

  • 注册
  • 登录
  • 退出登录

可以先采用:

Email + Password

后续可以增加:

  • Google Login
  • Apple Login
  • GitHub Login

密码不能明文存储。


11. Cloudflare 技术架构

项目计划以 Cloudflare 为主要基础设施。

整体结构:

                    Internet
                       │
                       ▼
                  Cloudflare
                       │
          ┌────────────┴────────────┐
          │                         │
          ▼                         ▼
     Cloudflare Pages         Cloudflare Workers
          │                         │
          ▼                         ▼
      Vue Web App              API / Auth
                                    │
                                    ▼
                              Cloudflare Storage

12. 前端

推荐技术栈:

  • Vue 3
  • TypeScript
  • Vite
  • Tailwind CSS

要求:

  • 响应式
  • 组件化
  • PC / Mobile / Tablet 全部适配
  • 代码结构清晰
  • 后期容易扩展

13. 后端

使用:

Cloudflare Workers

Worker 负责:

  • 用户认证
  • API
  • 用户数据读取
  • 用户数据写入
  • 复习算法
  • Review Queue 生成
  • 权限验证

例如:

GET /api/reviews/today

返回今天需要复习的句子。


14. 数据存储

需要线上数据库,而不是 LocalStorage。

第一版优先考虑:

Cloudflare D1

用于关系型数据:

users
sentences
reviews
tags

Cloudflare KV 更适合:

  • 缓存
  • Session
  • 简单 Key-Value 数据

因此推荐:

D1
↓
主要业务数据

KV
↓
缓存 / Session / 特定 Key-Value 数据

而不是把所有业务数据都设计成 KV。


15. 数据库设计

users

id
email
password_hash
created_at
updated_at

sentences

id
user_id
content
translation
pronunciation
notes
source
created_at
updated_at

reviews

id
sentence_id
user_id

status

interval
ease_factor

review_count
correct_count

last_review_at
next_review_at

created_at
updated_at

16. API 设计

认证:

POST /api/auth/register
POST /api/auth/login
POST /api/auth/logout
GET  /api/auth/me

句子:

GET    /api/sentences
POST   /api/sentences
GET    /api/sentences/:id
PUT    /api/sentences/:id
DELETE /api/sentences/:id

复习:

GET  /api/reviews/today
POST /api/reviews/:id/answer

统计:

GET /api/stats

17. 认证安全

密码不能直接存入数据库。

应该:

用户密码
   ↓
Password Hash
   ↓
数据库

登录时:

Password
   ↓
Hash / Verify
   ↓
验证成功
   ↓
创建 Session

前端不能自己决定用户身份。

所有涉及用户数据的 API 都应该由 Worker 验证身份,并确保:

用户 A 不能读取或修改用户 B 的句子。


18. Cloudflare 免费计划原则

项目采用:

Free Tier First

原则。

即:

能静态化 → 静态化
能缓存 → 缓存
不需要实时计算 → 不实时计算
不需要数据库查询 → 不查询
不需要 API → 不调用 API

避免一开始设计成高成本架构。


19. 第一版 MVP

第一版只实现:

  1. 注册 / 登录
  2. 添加英语句子
  3. 查看自己的句子
  4. 开始今日复习
  5. 显示句子
  6. 查看答案
  7. 选择 Again / Hard / Good / Easy
  8. 自动计算下一次复习时间
  9. 保存复习记录
  10. Dashboard 显示今日复习数量

做到这一步,产品就已经可以真正使用。


20. 后续扩展

第一版稳定后,再考虑:

AI

自动生成:

  • 中文解释
  • 语法分析
  • 重点单词
  • 使用场景
  • 类似句子

发音

支持:

  • TTS
  • 用户录音
  • 自己的发音
  • AI 发音评分

浏览器扩展

选中文字:

选中文字
↓
右键
↓
Add to Review

直接加入复习系统。

iOS / Safari

后续可以支持:

Share
↓
Add to English Review

21. 产品闭环

最终形成:

发现好句子
      ↓
加入系统
      ↓
第一次学习
      ↓
系统自动安排复习
      ↓
用户复习
      ↓
系统判断掌握程度
      ↓
重新计算复习时间
      ↓
长期积累
      ↓
形成个人英语语料库

核心不是:

“每天学习多少?”

而是:

“我真正想记住的英语,有没有在快要忘记的时候再次遇到它?”


22. 推荐最终技术栈

Frontend
├── Vue 3
├── TypeScript
├── Vite
└── Tailwind CSS

Backend
└── Cloudflare Workers

Database
└── Cloudflare D1

Key-Value / Cache
└── Cloudflare KV

Deployment
└── Cloudflare Pages

Domain
└── Cloudflare DNS

Authentication
└── Workers Session / Auth

整体目标:

尽量依赖 Cloudflare 免费资源,保持架构简单、成本低、可扩展,同时保证数据真正在线保存。