一个专为K-12阶段学生设计的英语单词学习平台,支持听说读写四维一体的科学学习流程。
- 5词循环学习 - 科学的微循环学习流程,确保学习效果
- 听说读写训练 - 全方位单词能力培养
- 智能语音评测 - 集成讯飞ISE专业发音评测
- 拼写练习 - 交互式字母格输入,即时反馈
- 昨日复习 - 首登自动引导,巩固学习成果
- 错误样本机制 - 当日错误>20自动触发错误样本保存
- 学习统计 - 详细的学习数据分析和可视化展示
- 年级课程管理 - 智能匹配年级课程,支持多教材版本
- 进度跟踪 - 实时学习进度和成就展示
- 学生管理 - 账号管理、年级调整、学习监督
- 成绩分析 - 多维度学习数据分析和导出
- 课程管理 - CSV批量导入,资源管理
- 错误诊断 - 7天内发音错误样本回放,90天拼写错误记录
- 框架: NestJS + TypeScript
- 数据库: MySQL + TypeORM
- 缓存: Redis (错误计数/限流)
- 认证: JWT + Passport
- 语音评测: 讯飞ISE WebSocket
- 文件存储: 阿里云OSS + CDN
- 音频处理: ffmpeg + WebRTC
- 框架: React 18 + TypeScript
- 构建工具: Vite
- 路由: React Router v6
- UI: 自定义组件 (Material Design风格)
- 图表: ECharts
- 音频: Web Audio API + MediaRecorder
// 5词循环学习流程
interface LearningFlow {
1: '单词展示' // 图片+音标+释义
2: '听音跟读' // 讯飞ISE评测
3: '拼写练习' // 字母格输入
4: '完成反馈' // 结果展示
5: '下一单词' // 自动切换
}
// 错误样本触发机制
if (dailyErrors.speak + dailyErrors.spell > 20) {
triggerErrorSampling(); // 保存到errors/前缀,7天生命周期
}- Node.js >= 18.0.0
- MySQL >= 8.0
- Redis >= 6.0 (可选)
git clone <repository-url>
cd habit-word-learning# 复制环境变量文件
cp .env.example .env
# 编辑 .env 文件配置数据库等信息
vi .env# 安装依赖 + 启动服务
./scripts/start-dev.sh# 导入基础数据
mysql -u root -p habit_word_learning < scripts/init-database.sql- 前端地址: http://localhost:3000
- 后端API: http://localhost:3001/api
- 学生账号:
student1/admin123 - 教师账号:
teacher1/admin123 - 管理员:
admin/admin123
├── frontend/ # React前端应用
│ ├── src/
│ │ ├── components/ # 可复用组件
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API服务
│ │ ├── hooks/ # 自定义Hook
│ │ └── types/ # TypeScript类型
├── backend/ # NestJS后端API
│ ├── src/
│ │ ├── modules/ # 业务模块
│ │ ├── database/ # 数据模型
│ │ └── common/ # 公共模块
├── scripts/ # 构建和部署脚本
└── docs/ # 项目文档
# 安装所有依赖
npm run install:all
# 启动开发服务器
npm run dev
# 类型检查
npm run typecheck
# 代码检查
npm run lint
# 运行测试
npm run test
# 构建生产版本
npm run build- 评测方式: 仅支持讯飞ISE"读单词(英文)",禁止自研STT
- 错误阈值: 当日累计错误>20触发样本保存,不得随意修改
- 数据生命周期: 静态资源长期、raw录音90天、errors录音7天
- 签名URL TTL: 静态≤1年、raw≤30天、errors≤7天
- 年级选择: 学生一次性选择,教师端可单个修改,禁止批量操作
- 评测延迟: P95 ≤ 2.5s
- API响应: P95 ≤ 300ms
- 页面加载: < 3s
- 音频上传成功率: > 98%
- 并发限制: ≤2个/用户
POST /api/auth/login # 用户登录
POST /api/auth/register # 用户注册
POST /api/auth/select-grade # 选择年级
GET /api/auth/profile # 获取用户信息POST /api/learning/sessions # 开始学习会话
GET /api/learning/sessions/:id # 获取会话详情
PUT /api/learning/items/:id # 更新学习项目
GET /api/learning/yesterday-words # 获取昨日单词
GET /api/learning/stats # 学习统计GET /api/courses/my # 我的课程
GET /api/courses/:id/units # 课程单元
GET /api/courses/units/:id/learning-group # 学习单词组- 主色: #2563eb (蓝色)
- 成功: #10b981 (绿色)
- 警告: #f59e0b (黄色)
- 错误: #ef4444 (红色)
- 文字: #1f2937 (深灰)
- 按钮:圆角8px,最小高度44px
- 输入框:边框1px,圆角8px,聚焦时蓝色边框
- 卡片:白色背景,圆角12px,阴影
- 录音按钮:圆形80px,状态变色
# 后端测试
cd backend && npm test
# 前端测试
cd frontend && npm test- 5词学习循环完整流程
- 讯飞ISE评测超时降级
- 错误样本阈值触发(第21次错误)
- 首登昨日复习重定向
- 年级选择锁定机制
# 构建生产版本
npm run build
# 设置环境变量
export NODE_ENV=production
export DB_HOST=your-production-db
export OSS_ACCESS_KEY_ID=your-key
export ISE_APP_ID=your-app-id
# 启动生产服务
cd backend && npm run start:prod# 构建镜像
docker build -t habit-word-learning .
# 运行容器
docker run -d -p 3001:3001 \
-e DB_HOST=your-db \
-e JWT_SECRET=your-secret \
habit-word-learning- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- style: 代码格式调整
- refactor: 重构代码
- test: 测试相关
- chore: 构建或工具相关
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- NestJS - 强大的Node.js框架
- React - 优秀的前端框架
- TypeScript - 类型安全的JavaScript
- 讯飞开放平台 - 专业的语音评测服务
- 阿里云OSS - 稳定的对象存储服务
如有问题或建议,请提交 Issue 或联系开发团队。
⭐ 如果这个项目对你有帮助,请给一个 Star!