# 单词记忆 **Repository Path**: lcz2000/word-memory ## Basic Information - **Project Name**: 单词记忆 - **Description**: 一个基于 FastAPI 和 React 的英语单词学习应用,支持单词发音、例句朗读、学习进度跟踪等功能 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-16 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 英语单词学习应用 一个基于 FastAPI 和 React 的英语单词学习应用,支持单词发音、例句朗读、学习进度跟踪等功能。 ## 功能特性 - 用户认证 - 管理员登录 - JWT token 认证 - 自动登录状态保持 - 单词学习 - 单词发音(英文) - 中文释义朗读 - 例句及翻译显示 - 例句朗读功能 - 循环播放功能 - 自动播放功能 - 播放速度调节(0.5x - 1.5x) - 学习管理 - 书本选择 - 学习进度跟踪 - 上一个/下一个单词导航 - 学习状态保存 ## 技术栈 ### 后端 - Python 3.8+ - FastAPI - SQLAlchemy - PyMySQL - JWT 认证 - 有道词典 API(语音合成) ### 前端 - React 18 - TypeScript - Vite - React Router - CSS3 ## 项目结构 english/ # 后端项目目录 ├── app.py # FastAPI 主程序 ├── config.py # 配置文件 ├── models.py # 数据模型 ├── init_db.py # 数据库初始化 ├── requirements.txt # Python 依赖 └── init.sql # 数据库表结构 web/ # 前端项目目录 ├── src/ │ ├── pages/ # 页面组件 │ │ ├── Login.tsx │ │ ├── Study.tsx │ │ └── BookSelection.tsx │ ├── App.tsx # 主应用组件 │ └── style.css # 全局样式 └── package.json # 项目依赖 ## 安装说明 ### 后端设置 1. 创建虚拟环境: ```bash python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows ``` 2. 安装依赖: ```bash pip install -r requirements.txt ``` 3. 配置数据库: - 创建 MySQL 数据库 - 执行 `init.sql` 创建表结构 - 运行 `init_db.py` 初始化数据 4. 启动后端服务: ```bash python app.py ``` ### 前端设置 1. 安装依赖: ```bash cd web npm install ``` 2. 配置环境变量: 创建 `.env` 文件:VITE_API_BASE=http://localhost:8000 3. 启动开发服务器: ```bash npm run dev ``` ## 使用说明 1. 访问 `http://localhost:5173` 打开应用 2. 使用管理员账号登录 3. 选择要学习的书本 4. 开始学习: - 点击播放按钮听单词发音 - 使用循环播放功能重复学习 - 开启朗读句子功能学习例句 - 使用自动播放功能连续学习 - 通过上一个/下一个按钮导航 ## 开发说明 ### 数据库结构 - users: 用户信息 - books: 书本信息 - words: 单词数据 - learning_progress: 学习进度 ### API 接口 - POST `/login`: 用户登录 - GET `/user/me`: 获取用户信息 - GET `/books`: 获取书本列表 - POST `/books/{book_id}/start`: 开始学习书本 - GET `/current-word`: 获取当前单词 - GET `/previous-word`: 获取上一个单词 - POST `/next-word`: 获取下一个单词 - GET `/pronounce`: 获取单词发音 - GET `/pronounce-cn`: 获取中文发音 ## 注意事项 1. 确保 MySQL 服务已启动 2. 检查环境变量配置 3. 确保有道词典 API 可用 4. 注意 JWT token 的有效期设置