一个基于 Next.js + Express + PostgreSQL 的在线编程学习平台。
CodeStory 是一个现代化的在线编程教育平台,提供交互式编程练习、课程管理和用户学习进度追踪功能。
- 框架: Next.js 14 (App Router)
- 语言: TypeScript
- 样式: Tailwind CSS 3
- 状态管理: Zustand
- 编辑器: Tiptap
- 框架: Express.js
- 语言: TypeScript
- 数据库: PostgreSQL 15 + Prisma ORM
- 缓存: Redis 7
- 认证: JWT + bcrypt
- 验证码: svg-captcha
- 容器化: Docker + Docker Compose
- 反向代理: Nginx
- 用户注册/登录/密码找回
- 个人资料管理(头像上传)
- 学习进度追踪
- 交互式编程练习
- 课程创建与编辑
- 章节与课时管理
- 练习题目配置(选择题、代码题)
- 课程封面图片上传
- 代码编辑器集成
- 实时练习反馈
- 提示系统
- 进度保存
CodeStory/
├── backend/ # 后端服务
│ ├── src/
│ │ ├── controllers/ # 控制器
│ │ ├── services/ # 业务逻辑
│ │ ├── routes/ # 路由配置
│ │ ├── middleware/ # 中间件
│ │ ├── config/ # 配置文件
│ │ ├── utils/ # 工具函数
│ │ └── types/ # 类型定义
│ ├── prisma/ # Prisma 配置
│ ├── uploads/ # 上传文件目录
│ └── package.json
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── app/ # Next.js 路由
│ │ ├── components/ # React 组件
│ │ ├── api/ # API 调用
│ │ ├── hooks/ # 自定义 Hooks
│ │ ├── store/ # 状态管理
│ │ ├── types/ # 类型定义
│ │ └── utils/ # 工具函数
│ └── package.json
├── nginx/ # Nginx 配置
│ └── conf.d/
├── docker-compose.yml # Docker Compose 配置
└── README.md
- Node.js >= 18.0.0
- PostgreSQL >= 15.0
- Redis >= 7.0
- Docker (可选)
# 后端
cd backend
pnpm install
# 前端
cd ../frontend
pnpm install在 backend 目录下创建 .env 文件:
PORT=4001
NODE_ENV=development
DATABASE_URL=postgresql://username:password@localhost:5432/codepractice
REDIS_URL=redis://localhost:6379
JWT_SECRET=your_jwt_secret_herecd backend
npx prisma migrate dev# 启动后端 (端口 4001)
cd backend
pnpm run dev
# 启动前端 (端口 3001)
cd frontend
pnpm run dev# 使用开发配置
docker-compose -f docker-compose.dev.yml up -d# 使用生产配置
docker-compose up -d访问地址:
- 前端: http://localhost
- 后端 API: http://localhost/api/
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录POST /api/auth/forgot-password- 忘记密码POST /api/auth/captcha- 获取验证码
GET /api/courses- 获取课程列表GET /api/courses/:id- 获取课程详情GET /api/lessons/:id- 获取课时详情POST /api/exercises/submit- 提交练习
GET /api/user-manage/users- 获取用户列表PUT /api/user-manage/users/:id- 更新用户信息DELETE /api/user-manage/users/:id- 删除用户
POST /api/course-manage/courses- 创建课程PUT /api/course-manage/courses/:id- 更新课程DELETE /api/course-manage/courses/:id- 删除课程POST /api/course-manage/chapters- 创建章节POST /api/course-manage/lessons- 创建课时
- 使用 TypeScript 进行类型检查
- ESLint 进行代码风格检查
- 遵循 RESTful API 设计规范
- Fork 仓库
- 创建功能分支
feature/xxx - 提交代码
- 创建 Pull Request
MIT License
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件
CodeStory - 让编程学习更有趣!