{"id":38501807,"url":"https://github.com/ilovend/wordeasy","last_synced_at":"2026-01-17T06:01:18.669Z","repository":{"id":326321321,"uuid":"1103978197","full_name":"ilovend/wordeasy","owner":"ilovend","description":"🎮 WordEasy - 基于科学记忆法的交互式英语单词拼写学习工具  特性：游戏化学习 | 智能复习系统 | 语音朗读 | 拼写错误分析 | 三级难度 | 本地SQLite存储  技术栈：Vue 3 + FastAPI + SQLite + Tailwind CSS","archived":false,"fork":false,"pushed_at":"2025-11-27T04:47:57.000Z","size":1467,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-29T21:58:06.595Z","etag":null,"topics":["education","english-learning","fastapi","pinia","python","spelling-game","sqlite","tailwindcss","vue","vue3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ilovend.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-25T15:31:39.000Z","updated_at":"2025-11-27T04:48:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ilovend/wordeasy","commit_stats":null,"previous_names":["ilovend/wordeasy"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ilovend/wordeasy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilovend%2Fwordeasy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilovend%2Fwordeasy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilovend%2Fwordeasy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilovend%2Fwordeasy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilovend","download_url":"https://codeload.github.com/ilovend/wordeasy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilovend%2Fwordeasy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28501427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T04:31:57.058Z","status":"ssl_error","status_checked_at":"2026-01-17T04:31:45.816Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["education","english-learning","fastapi","pinia","python","spelling-game","sqlite","tailwindcss","vue","vue3"],"created_at":"2026-01-17T06:01:17.992Z","updated_at":"2026-01-17T06:01:18.606Z","avatar_url":"https://github.com/ilovend.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎮 WordEasy - 拼写攻防战\n\n\u003cdiv align=\"center\"\u003e\n\n![License](https://img.shields.io/badge/license-MIT-blue.svg)\n![Python](https://img.shields.io/badge/python-3.8+-green.svg)\n![Vue](https://img.shields.io/badge/vue-3.3.8-brightgreen.svg)\n![FastAPI](https://img.shields.io/badge/FastAPI-0.104.1-009688.svg)\n![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)\n![Setup Automated](https://img.shields.io/badge/setup-automated-success.svg)\n\n**一个基于科学记忆法的交互式英语单词拼写学习工具**\n\n[📖 快速开始](QUICKSTART.md) | [🎯 功能特性](#-功能特性) | [💡 使用指南](#-使用指南) | [❓ 常见问题](docs/FAQ.md) | [🤝 贡献指南](CONTRIBUTING.md)\n\n\u003cimg src=\"docs/screenshot.png\" alt=\"WordEasy Screenshot\" width=\"800\"/\u003e\n\n\u003c/div\u003e\n\n---\n\n## 📖 项目简介\n\nWordEasy 是一个轻量级的英语单词学习应用，通过游戏化的方式帮助用户掌握单词拼写。项目采用前后端分离架构，结合艾宾浩斯遗忘曲线算法，提供智能的复习提醒系统。\n\n### 🎯 核心特点\n\n- 🎮 **游戏化学习** - 拼写攻防战，让学习充满趣味\n- 📚 **三种模式** - 学习模式、挑战模式、复习模式，循序渐进\n- 🧠 **智能复习** - 基于遗忘曲线的科学复习算法（1天→3天→15天）\n- 🎵 **语音朗读** - 集成Web Speech API，支持单词发音\n- 📊 **学习统计** - 实时追踪学习进度和掌握程度\n- 💾 **本地存储** - SQLite数据库，无需云端服务器\n- 🎨 **精美UI** - Tailwind CSS打造的现代化界面\n- 📱 **响应式设计** - 支持桌面端和移动端\n\n---\n\n## ✨ 功能特性\n\n### 🎓 学习模式\n- 浏览单词，查看释义\n- 自动播放发音（2次重复）\n- 键盘快捷键支持（←→/AD 切换，Space 标记，R 复读）\n- 学习进度条实时显示\n\n### ⚔️ 挑战模式\n- 限时拼写测试（90秒）\n- 生命值系统（3条命）\n- 积分奖励机制\n- 拼写错误实时对比显示\n- **必须答对才能继续**（答错需重新拼写）\n\n### 🔄 复习模式\n- 今日待复习单词提醒\n- **错词本模式**：专门练习历史错误单词\n- 基于掌握程度的智能推送\n- 遗忘曲线算法优化（1天→3天→7天→15天）\n\n### 🎯 用户体验增强\n- **Toast通知系统**：优雅的消息提示\n- **加载状态反馈**：LoadingSpinner组件\n- **友好的错误提示**：统一的错误处理\n\n### 📚 词库管理\n- 内置400+分级单词\n- **多格式支持**：TXT、CSV、JSON 自动识别\n- **三种导入方式**：\n  - ✏️ 快速添加：手动输入单个单词\n  - 📋 批量添加：粘贴多行文本（支持空格/Tab/竖线分隔）\n  - 📤 文件导入：上传词库文件（100+单词）\n- **在线格式转换器**：CSV/JSON → WordEasy标准格式\n- 智能难度分类（基于单词长度和词缀）\n- 词库统计和清空功能\n- 详细指南：[词库导入完整指南](docs/WORD_IMPORT_GUIDE.md)\n\n### 🎯 难度分级\n- **初级** (1级): 3-5字母短单词，适合入门\n- **中级** (2级): 6-9字母标准词汇\n- **高级** (3级): 10+字母或高级词缀单词\n\n---\n\n## 🛠️ 技术栈\n\n### 前端\n- **Vue 3** - 渐进式JavaScript框架（Composition API）\n- **Pinia** - 轻量级状态管理\n- **Tailwind CSS** - 实用优先的CSS框架\n- **Axios** - HTTP客户端\n- **Web Speech API** - 浏览器原生语音合成\n- **Vite优化** - 代码分割、压缩配置\n- **Toast组件** - 统一的消息通知系统\n- **Loading组件** - 加载状态反馈\n\n### 后端\n- **FastAPI** - 现代化Python Web框架\n- **SQLAlchemy** - Python ORM\n- **SQLite** - 轻量级数据库\n- **Pydantic** - 数据验证\n- **缓存系统** - 内存缓存优化性能\n- **性能监控** - API调用性能追踪\n\n### 开发工具\n- **Vite** - 前端构建工具\n- **Uvicorn** - ASGI服务器\n- **PowerShell** - 自动化脚本\n\n---\n\n## 🚀 快速开始\n\n\u003e **⚡ 3步快速启动，5分钟开始使用！**\n\n### 环境要求\n\n- **Python** 3.8+\n- **Node.js** 16+\n- **npm** 或 **yarn**\n\n### 🎯 一键安装（推荐）\n\n```bash\n# 1. 克隆项目\ngit clone https://github.com/ilovend/wordeasy.git\ncd wordeasy\n\n# 2. 运行安装脚本（自动检测环境、安装依赖、初始化数据库）\npython setup.py\n\n# 3. 启动项目\n# Windows 用户:\nrestart.bat\n\n# macOS/Linux 用户:\nchmod +x start.sh\n./start.sh\n\n# 4. 在浏览器打开: http://localhost:5173\n```\n\n### 📝 手动安装\n\n\u003cdetails\u003e\n\u003csummary\u003e点击展开查看详细步骤\u003c/summary\u003e\n\n**1. 克隆项目**\n```bash\ngit clone https://github.com/ilovend/wordeasy.git\ncd wordeasy\n```\n\n**2. 后端安装**\n```bash\ncd backend\n\n# 创建数据目录（会自动创建，但可以手动创建）\nmkdir data\n\n# 安装依赖\npip install -r requirements.txt\n\n# 初始化数据库（可选，首次启动会自动创建）\npython init_db.py\n```\n\n**3. 前端安装**\n```bash\ncd frontend\nnpm install\n# 或使用 yarn\nyarn install\n```\n\n**4. 启动应用**\n\n```bash\n# 终端1 - 启动后端（端口8000）\ncd backend\npython -m uvicorn app.main:app --reload\n\n# 终端2 - 启动前端（端口5173）\ncd frontend\nnpm run dev\n```\n\n访问应用：**http://localhost:5173**\n\n\u003c/details\u003e\n\n### 🆘 遇到问题？\n\n查看 [快速开始指南](QUICKSTART.md) 或 [安装文档](INSTALL.md)\n\n---\n\n## 🚀 快速开始\n\n### 环境要求\n\n- **Python** 3.8+\n- **Node.js** 16+\n- **npm** 或 **yarn**\n\n### 安装步骤\n\n1. **克隆项目**\n```bash\ngit clone https://github.com/yourusername/wordeasy.git\ncd wordeasy\n```\n\n2. **后端安装**\n```bash\ncd backend\npip install -r requirements.txt\n```\n\n3. **前端安装**\n```bash\ncd frontend\nnpm install\n# 或使用 yarn\nyarn install\n```\n\n### 启动应用\n\n#### 方式1：使用启动脚本（推荐）\n```powershell\n# Windows PowerShell\n.\\restart.bat\n\n# 或使用 PowerShell 脚本\n.\\start.ps1\n```\n\n#### 方式2：分别启动\n```bash\n# 终端1 - 启动后端（端口8000）\ncd backend\npython -m uvicorn app.main:app --reload\n\n# 终端2 - 启动前端（端口5173）\ncd frontend\nnpm run dev\n```\n\n访问应用：**http://localhost:5173**\n\n---\n\n## 📂 项目结构\n\n```\nwordeasy/\n├── backend/                 # 后端服务\n│   ├── app/\n│   │   ├── main.py         # FastAPI主应用\n│   │   ├── models.py       # 数据库模型\n│   │   ├── schemas.py      # Pydantic模型\n│   │   ├── crud.py         # 数据库操作\n│   │   ├── cache.py        # 🆕 缓存系统\n│   │   ├── performance.py  # 🆕 性能监控\n│   │   ├── word_classifier.py  # 智能分类算法\n│   │   └── database.py     # 数据库连接\n│   ├── migrations/         # 🆕 数据库迁移脚本\n│   ├── data/\n│   │   └── wordeasy.db     # SQLite数据库\n│   └── requirements.txt    # Python依赖\n├── frontend/               # 前端应用\n│   ├── src/\n│   │   ├── components/     # Vue组件\n│   │   │   ├── SpellGame.vue      # 主游戏组件\n│   │   │   ├── WordManager.vue    # 词库管理\n│   │   │   ├── LoadingSpinner.vue # 🆕 加载组件\n│   │   │   └── Settings.vue       # 设置页面\n│   │   ├── stores/         # Pinia状态管理\n│   │   │   ├── game.js     # 游戏状态（含错词本模式）\n│   │   │   └── settings.js # 设置状态\n│   │   ├── api/            # API封装（含错误处理）\n│   │   ├── utils/          # 工具函数\n│   │   │   └── toast.js    # 🆕 Toast通知系统\n│   │   └── router/         # 路由配置\n│   └── package.json        # 前端依赖\n├── tools/                  # 工具脚本\n│   └── generate_words.py   # 词库生成器\n├── restart.bat             # 一键启动脚本\n└── README.md               # 项目文档\n```\n\n---\n\n## 🎮 使用指南\n\n### 学习流程\n\n1. **选择难度** - 在主页选择初级/中级/高级\n2. **学习模式** - 浏览单词，标记已学习的单词\n3. **开始挑战** - 全部学完后进入限时拼写测试\n4. **查看结果** - 测试结束后查看成绩和错误统计\n5. **复习巩固** - 第二天系统会提醒复习\n\n### 快捷键\n\n#### 学习模式\n- `←` / `A` - 上一个单词\n- `→` / `D` - 下一个单词\n- `Space` - 标记为已学习\n- `R` - 复读发音\n- `Enter` - 开始挑战\n- `ESC` - 退出\n\n#### 挑战模式\n- `Enter` - 提交答案\n- `ESC` - 退出挑战\n\n### 自定义词库\n\n创建TXT文件，每行格式：`单词|中文释义`\n\n示例：\n```\nabandon|放弃\nbenefit|好处\nchallenge|挑战\n```\n\n在词库管理页面上传即可。\n\n---\n\n## 📊 数据库设计\n\n### Words 表（单词）\n```sql\nCREATE TABLE words (\n    id INTEGER PRIMARY KEY,\n    word TEXT UNIQUE NOT NULL,\n    zh_definition TEXT NOT NULL,\n    difficulty INTEGER CHECK(difficulty BETWEEN 1 AND 3),\n    category TEXT,\n    audio_url TEXT\n);\n```\n\n### Progress 表（学习进度）\n```sql\nCREATE TABLE progress (\n    word_id INTEGER PRIMARY KEY,\n    mastery_level INTEGER DEFAULT 0,  -- 0陌生/1熟悉/2掌握\n    next_review DATE,                 -- 下次复习日期 (索引)\n    error_count INTEGER DEFAULT 0,    -- 错误次数 (索引)\n    last_reviewed DATE,               -- 🆕 最后复习日期\n    review_count INTEGER DEFAULT 0,   -- 🆕 复习次数\n    FOREIGN KEY (word_id) REFERENCES words(id)\n);\n\n-- 性能优化索引\nCREATE INDEX ix_progress_next_review ON progress(next_review);\nCREATE INDEX ix_progress_error_count ON progress(error_count);\n```\n\n---\n\n## 🔧 配置说明\n\n### 后端配置\n在 `backend/app/database.py` 中修改数据库路径：\n```python\nSQLALCHEMY_DATABASE_URL = \"sqlite:///./data/wordeasy.db\"\n```\n\n### 前端配置\n在 `frontend/src/api/index.js` 中修改API地址：\n```javascript\nconst API_BASE_URL = '/api'  // 开发环境\n// const API_BASE_URL = 'http://your-server.com/api'  // 生产环境\n```\n\n在 `vite.config.js` 中配置代理：\n```javascript\nserver: {\n  proxy: {\n    '/api': 'http://localhost:8000'\n  }\n}\n```\n\n---\n\n## 🧪 测试\n\n### 后端测试\n```bash\ncd backend\npytest\n```\n\n### 前端测试\n```bash\ncd frontend\nnpm run test\n```\n\n---\n\n## 📦 部署\n\n### 生产构建\n\n**前端打包**：\n```bash\ncd frontend\nnpm run build\n```\n\n**后端部署**：\n```bash\ncd backend\nuvicorn app.main:app --host 0.0.0.0 --port 8000\n```\n\n### Docker部署（可选）\n```bash\ndocker-compose up -d\n```\n\n---\n\n## 🤝 贡献指南\n\n欢迎贡献代码！请遵循以下步骤：\n\n1. Fork 本仓库\n2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature/AmazingFeature`)\n5. 提交Pull Request\n\n### 代码规范\n- Python: 遵循 PEP 8\n- JavaScript: 遵循 ESLint 配置\n- 提交信息: 使用语义化提交规范\n\n---\n\n## 📝 更新日志\n\n### v1.3.0 (2025-01-26) 🎉\n- ✨ **错词本模式**：专门练习历史错误单词\n- 🎨 **Toast通知系统**：优雅的消息提示（4种类型）\n- ⚡ **LoadingSpinner组件**：改善加载状态反馈\n- 📊 **性能监控工具**：API调用性能追踪\n- 🚀 **Vite构建优化**：代码分割和压缩配置\n- 💾 **后端缓存系统**：SimpleCache类和@cached装饰器\n- 🔍 **数据库索引优化**：next_review和error_count字段索引\n- 📈 **新增Progress字段**：last_reviewed和review_count\n- 🔧 **CI/CD修复**：升级GitHub Actions到v4/v5版本\n- 🎯 **错误处理增强**：统一的友好错误消息\n\n### v1.2.0 (2025-01-25)\n- ✨ 新增复习模式和今日复习提醒\n- ✨ 添加学习记录系统（基于遗忘曲线）\n- 🐛 修复挑战模式答错后无法输入的问题\n- 🎨 优化UI动画和交互体验\n- 🔊 改进语音播放逻辑\n\n### v1.1.0 (2025-01-20)\n- ✨ 新增学习模式\n- ✨ 添加键盘快捷键支持\n- ✨ 实现智能难度分类\n- 🎨 重构UI界面\n\n### v1.0.0 (2025-01-15)\n- 🎉 首次发布\n- ✨ 基础拼写游戏功能\n- ✨ 词库管理功能\n\n[查看完整更新日志](CHANGELOG.md)\n\n---\n\n## 📄 许可证\n\n本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情\n\n---\n\n## 👥 作者\n\n- **Your Name** - *Initial work* - [YourGithub](https://github.com/yourusername)\n\n---\n\n## 🙏 致谢\n\n- [FastAPI](https://fastapi.tiangolo.com/) - 优秀的Python Web框架\n- [Vue.js](https://vuejs.org/) - 渐进式JavaScript框架\n- [Tailwind CSS](https://tailwindcss.com/) - 实用优先的CSS框架\n- [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) - 浏览器语音功能\n\n---\n\n## 📮 联系方式\n\n- 项目主页: [https://github.com/yourusername/wordeasy](https://github.com/yourusername/wordeasy)\n- Issue追踪: [https://github.com/yourusername/wordeasy/issues](https://github.com/yourusername/wordeasy/issues)\n- 邮箱: ilovendme@outlook.com\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**如果这个项目对你有帮助，请给一个 ⭐️ Star！**\n\nMade with ❤️ by [ilovend](https://github.com/ilovend)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filovend%2Fwordeasy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filovend%2Fwordeasy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filovend%2Fwordeasy/lists"}