一个基于 Vue 3 + TypeScript + Tailwind CSS 的在线打字练习平台,支持用户管理、文章管理、成绩统计和排行榜功能。
dazi/ ├── src/ # 前端源码 │ ├── views/ # 页面组件 │ │ ├── HomeView.vue # 首页 │ │ ├── PracticeView.vue# 练习页 │ │ ├── ResultView.vue # 结果页 │ │ ├── LeaderboardView.vue # 排行榜 │ │ └── admin/ # 后台管理页面 │ ├── stores/ # Pinia 状态管理 │ ├── router/ # 路由配置 │ └── types/ # TypeScript 类型定义 ├── server/ # 后端源码 │ ├── routes/ # API 路由 │ ├── database.ts # 数据库配置 │ └── index.ts # 服务入口 └── package.json
npm install
npm run dev:all
启动后访问:
npm run build
# 构建并启动
docker-compose up -d --build
# 查看日志
docker logs dazi
# 停止服务
docker-compose down
启动后访问:
端口配置:
8080,容器内部端口 3200./data 目录POST /api/auth/admin-login - 管理员登录POST /api/auth/user-login - 用户登录GET /api/users - 获取用户列表POST /api/users - 添加用户PUT /api/users/:id - 更新用户DELETE /api/users/:id - 删除用户GET /api/articles - 获取文章列表GET /api/articles/random - 获取随机文章POST /api/articles - 添加文章PUT /api/articles/:id - 更新文章DELETE /api/articles/:id - 删除文章GET /api/scores/leaderboard - 获取排行榜POST /api/scores - 提交成绩GET /api/scores - 获取成绩列表DELETE /api/scores/:id - 删除成绩GET /api/classes/grades - 获取年级列表POST /api/classes/grades - 添加年级GET /api/classes - 获取班级列表POST /api/classes - 添加班级数据库文件位于 server/data/dazi.db,首次运行会自动初始化:
MIT