{"id":29296244,"url":"https://github.com/pengxiaohua/listenly","last_synced_at":"2025-10-28T23:02:38.252Z","repository":{"id":281003947,"uuid":"943789609","full_name":"pengxiaohua/listenly","owner":"pengxiaohua","description":"英语在线单词和句子听写","archived":false,"fork":false,"pushed_at":"2025-07-13T16:25:22.000Z","size":27168,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-13T18:29:04.435Z","etag":null,"topics":["authjs","nextjs","postgresql","prisma","react","shadcn-ui","tailwindcss","typescript","zod","zustand"],"latest_commit_sha":null,"homepage":"https://listenly.cn","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pengxiaohua.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-03-06T09:14:47.000Z","updated_at":"2025-07-13T16:25:25.000Z","dependencies_parsed_at":"2025-06-27T18:24:17.708Z","dependency_job_id":"97bfc566-db93-4165-ba68-f723300b5d88","html_url":"https://github.com/pengxiaohua/listenly","commit_stats":null,"previous_names":["pengxiaohua/echo-listen","pengxiaohua/listenly"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pengxiaohua/listenly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengxiaohua%2Flistenly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengxiaohua%2Flistenly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengxiaohua%2Flistenly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengxiaohua%2Flistenly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pengxiaohua","download_url":"https://codeload.github.com/pengxiaohua/listenly/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pengxiaohua%2Flistenly/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265586021,"owners_count":23792835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["authjs","nextjs","postgresql","prisma","react","shadcn-ui","tailwindcss","typescript","zod","zustand"],"created_at":"2025-07-06T15:05:07.776Z","updated_at":"2025-10-28T23:02:38.227Z","avatar_url":"https://github.com/pengxiaohua.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📖 LISTENLY\n\n## 1. 简介\n\n**[LISTENLY](https://listenly.cn)** 是一款基于英语在线学习网站，专注 **「听」**，**「单词听写」**、**「句子听写」** 和 **「影子跟读」** 单个板块。旨在帮助用户提高英语听力和拼写能力。\n\n## 2. 项目启动流程\n\n### **1️⃣ 环境要求**\n\n- **Node.js 18+**\n- **PostgreSQL 14+**\n- **pnpm (推荐) 或 npm**\n\n### **2️⃣ 安装依赖**\n\n```bash\npnpm install\n```\n\n### **3️⃣ 配置环境变量**\n\n在项目根目录创建 `.env.local`，添加以下内容：\n\n```env\nDATABASE_URL=\"postgresql://username:password@localhost:5432/listenly\"\n```\n\n### **4️⃣ 运行数据库迁移**\n\n```bash\nnpx prisma migrate dev --name init\n```\n\n### **5️⃣ 启动项目**\n\n```bash\npnpm run dev\n```\n\n项目默认运行在 `http://localhost:3000` 🚀\n\n---\n\n## 3. 线上部署\n### 初始化部署\n\n```bash\n# 安装依赖\npnpm install\n\n# 生成 Prisma Client\npnpm prisma generate\n\n# 构建\npnpm build\n\n# 启动 PM2\npm2 start npm --name \"listenly\" -- start\n```\n\n### 更新部署\n\n```bash\n# 拉取最新代码\ngit pull\n\n# 安装依赖（如果 package.json 有更新）\npnpm install\n\n# 构建项目\npnpm build\n\n# 重启应用（优雅重启，不会导致服务中断）\npm2 reload listenly\n```\n\n### 数据库表更新后，阿里云ECS部署流程\n```bash\n# 1. 拉取最新代码\ngit pull\n\n# 2. 安装依赖（确保 Prisma 等依赖是最新的）\npnpm install\n\n# 3. 先执行数据库迁移（在构建之前！）\nnpx prisma migrate deploy\n\n# 4. 生成 Prisma Client\nnpx prisma generate\n\n# 5. 然后才构建项目\npnpm run build\n\n# 6. 最后重启应用\npm2 reload listenly\n```\n---\n\n## 4. 技术栈\n\n| 技术                        | 说明                            |\n| --------------------------- | -------------------------------|\n| **Next.js 15 (App Router)** | 服务端渲染 (SSR) + 前端 UI 交互   |\n| **Next.js API Routes**      | Next.js接口服务                 |\n| **React 19**                | 前端框架                      |\n| **Tailwind CSS**            | UI 样式管理                     |\n| **Prisma ORM**              | 数据库管理                      |\n| **PostgreSQL**              | 数据库        |\n| **shadcn/ui**               | 现代化 UI 组件库                |\n| **Microsoft edge_tts**      | 文字转声音TTS服务               |\n| **faker-js**                | 随机生成姓名                   |\n| **Dicebear**                | 随机头像生成                   |\n| **@uiw/react-heat-map**     | 学习日历热力图                  |\n\n---\n\n## 5. 项目功能介绍\n\n### 🅰️ **单词拼写**\n\n- 支持 **美式/英式** 发音\n- 选中词库，展示未拼写的单词\n- 支持加入**生词本**\n- **正确/错误音效** 提示\n- 查看 **拼写正确/错误统计**\n\n### 🎧 **句子精听**\n\n- 本地同步获取句子听力材料到数据库\n- 支持 **调整语速**\n- **多次播放**\n- 支持加入**生词本**\n- 句子填空**听抄**模式\n\n### 🗣️ **影子跟读**\n\n- 听完句子后，读出来\n- **AI** 打分\n- 高亮发音 **不准确** 的单词\n\n---\n\n## 6. 功能进度\n\n### ✅ **已完成功能**\n\n- **单词拼写**\n  - [x] **本地 40000+单词 json 同步数据库**\n  - [x] **记录用户拼写历史，并记录到数据库**\n  - [x] **确保未拼写成功的单词优先出现**\n  - [x] **美式/英式发音切换**\n  - [x] **慢速模式**\n  - [x] **正确/错误音效**\n  - [x] **查看音标**\n  - [x] **拼写正确统计**\n  - [x] **Microsoft Edge TTS 单词发音**\n\n- **部署上线**\n  - [x] 购买域名\n  - [x] HTTPS\n  - [x] 购买阿里云ECS云服务器\n  - [x] 购买阿里云数据库RDS\n  - [x] 部署阿里云\n\n- **句子精听**\n  - [x] OSS 读取听力句子数据\n  - [x] 句子听写抄写功能\n  - [x] 语速调整\n  - [x] 句子回放\n\n- **影子跟读**\n  - [x] 单词或句子阅读一遍后\n  - [x] 按空格键，开始跟读一遍\n  - [x] 给出读音打分\n\n- **用户登录**\n  - [ ] 手机号验证码登录\n  - [ ] 阿里云滑动条验证\n  - [x] 微信扫码登录\n  - [x] 个人学习记录存储\n  - [x] 用户信息修改\n  - [x] 个人学习热力图\n  - [x] 学习排行榜\n\n- **移动端适配、Windows适配**\n  - [x] 适配 Windows 交互和样式\n  - [x] 响应式优化-支持手机移动端尺寸交互\n\n- **其他功能**\n  - [x] 用户反馈\n\n### 🚀 **待完成功能**\n\n- **我的页面**\n  - [x] 我的主页，整体布局优化\n\n- **充值功能**\n  - [ ] 微信和支付宝扫码充值\n  - [ ] 个人中心-充值记录\n\n---\n\n## 📢 贡献 \u0026 反馈\n\n欢迎提交 Issue 或 PR 来优化本项目 🎉  \n如果你有任何建议，请联系 [609370075@qq.com](mailto:609370075@qq.com) 😊\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpengxiaohua%2Flistenly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpengxiaohua%2Flistenly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpengxiaohua%2Flistenly/lists"}