一个功能完整的英语跟读学习平台,采用 Monorepo 架构,包含服务端、管理端和用户端三个应用。
| 端 | 技术 | 端口 |
|---|---|---|
| 服务端 | NestJS 10 + Prisma 6 + PostgreSQL | 3001 |
| 用户端 | Next.js 15 + Tailwind CSS + shadcn/ui | 3000 |
| 管理端 | Ant Design Pro 6 + UmiJS 4 | 3002 |
listenly/
├── apps/
│ ├── server/ # NestJS 服务端
│ ├── client/ # Next.js 用户端
│ └── admin/ # Ant Design Pro 管理端
├── packages/
│ ├── shared/ # 共享类型定义、常量
│ └── utils/ # 共享工具函数
├── docs/ # 项目文档
├── pnpm-workspace.yaml
└── turbo.json
- Node.js >= 18
- pnpm >= 9
- PostgreSQL 数据库
pnpm install复制服务端环境变量配置文件:
cp apps/server/env.example apps/server/.env编辑 .env 文件,配置数据库连接等信息:
DATABASE_URL="postgresql://postgres:password@localhost:5432/listenly?schema=public"
JWT_SECRET="your-secret-key"cd apps/server
pnpm db:push # 同步数据库结构
pnpm db:seed # 初始化种子数据启动所有服务:
pnpm dev或单独启动:
pnpm dev:server # 启动服务端 (localhost:3001)
pnpm dev:client # 启动用户端 (localhost:3000)
pnpm dev:admin # 启动管理端 (localhost:3002)- 用户端: http://localhost:3000
- 管理端: http://localhost:3002
- API 文档: http://localhost:3001/api/docs
- 管理员:
admin@listenly.com/admin123 - 测试用户:
user@listenly.com/user123
- 多种登录方式: 邮箱/账号密码登录、微信扫码登录(需配置)、短信验证码登录(预留)
- 书籍浏览: 分类筛选、搜索、收藏
- 学习模式: 听音跟读、单词拼写、选择题、填空题、听写句子、录音对比
- 生词本: 收集不熟悉的单词
- 错词本: 记录答错的单词,强化练习
- 收藏: 收藏书籍、单词、句子
- 学习记录: 每日/周/月统计、连续学习天数
- 用户管理: 查看用户列表
- 分类管理: 增删改查、排序
- 书籍管理: 增删改查、封面上传、上下架
- 分组管理: 书籍下的分组管理
- 单词管理: 支持多词性多释义、音频上传
- 句子管理: 关键词标注、语法说明
- RESTful API 设计
- JWT 认证
- Swagger API 文档
- 完整的数据验证
详见 docs/DEVELOPMENT_PLAN.md
# 安装依赖
pnpm install
# 开发模式
pnpm dev
# 构建
pnpm build
# 数据库
cd apps/server
pnpm db:generate # 生成 Prisma Client
pnpm db:push # 同步数据库结构
pnpm db:migrate # 创建迁移
pnpm db:seed # 初始化种子数据
pnpm db:studio # 打开 Prisma Studiocd apps/server
pnpm build
pnpm start:prodcd apps/client
pnpm build
pnpm startcd apps/admin
pnpm build
# 将 dist 目录部署到静态服务器MIT