Echogle 是一个面向英语阅读与词汇学习的开源平台,强调通过阅读真实文章进行词汇积累与理解,同时提供学习统计与内容管理能力。
功能特性
- 文章阅读:分类/难度筛选、分段展示、译文与重点词汇
- 词汇本:收藏、掌握状态、发音与释义
- 账号体系:邮箱注册、登录、找回密码
- 学习统计:阅读与词汇数据汇总
- 内容管理:文章与音频时间戳导入(管理端)
技术栈
- 前端:Vite + React + TypeScript + Tailwind CSS + React Router + Axios
- 后端:Spring Boot 3.2.3 + Java 17 + MyBatis Plus + MapStruct + MySQL 8
- 其它:JWT、Caffeine、BCrypt、Tencent Cloud SES
目录结构
echogle/
├─ apps/
│ ├─ server/ # Spring Boot 后端
│ └─ web/ # Vite + React 前端
├─ examples/ # 示例数据与模板
├─ resources/ # 运行时资源(如音频)
└─ scripts/ # 辅助脚本
快速开始 前置条件:
- JDK 17+
- Maven 3.6+
- Node.js(建议 18+)
- MySQL 8+
后端启动:
cd apps/server
mvn spring-boot:run前端启动:
cd apps/web
npm install
npm run dev配置说明
- 后端配置位于
apps/server/src/main/resources/application.yml与apps/server/src/main/resources/application-dev.yml。 - 项目默认启用
dev配置(spring.profiles.active=dev)。 - 前端 API 地址当前在
apps/web/src/api/request.ts中硬编码为线上地址;本地开发请改为本地后端地址或改造为VITE_API_BASE_URL环境变量。
数据库初始化
- SQL 文件位于
apps/server/sql/,按需导入到本地echogle数据库。
示例数据
examples/article-paragraphs-annotated.jsonexamples/article-sections-lexical-plan.jsonexamples/transcript-timestamps.jsonexamples/email-verification-template.html
构建与测试 后端:
cd apps/server
mvn test
mvn clean install前端:
cd apps/web
npm run lint
npm run build安全提示
- 请不要在开源仓库中保留真实的数据库账号、密钥或第三方服务凭据。
- 如仓库历史中曾包含真实凭据,建议立即轮换并改用本地私有配置或环境变量注入。
开源占位符配置
- 开源版本已将敏感值替换为
__REPLACE_ME__占位符,运行前需手动替换为真实值。 - 需替换的位置:
apps/server/src/main/resources/application.yml:数据库账号/密码、tencentcloud.secretId/secretKey、echogle.jwt.secretapps/server/src/main/resources/application-dev.yml:数据库账号/密码、tencentcloud.secretId/secretKey、echogle.jwt.secretscripts/audio.ts:DEFAULT_API_KEY
贡献方式
- 欢迎提交 Issue/PR,提交前请跑通与改动相关的测试或检查命令。
说明 目前代码比较混乱,稍后会调整编写架构图