一个基于 Web 的全栈打字练习应用,支持自由练习、限时挑战、竞赛模式等多种练习方式,提供详细的成绩统计和历史记录,并配有完整的后台管理系统。
| 层级 | 技术 |
|---|---|
| 前端 | Vue 3 + TypeScript + Vite + Tailwind CSS + Pinia + Chart.js |
| 后端 | Python + FastAPI + SQLAlchemy 2.0 (Async) + aiosqlite |
| 认证 | JWT + bcrypt |
| 部署 | Docker + Docker Compose |
typing/ ├── backend/ # 后端服务 │ ├── app/ │ │ ├── main.py # FastAPI 应用入口 │ │ ├── database.py # 数据库连接 │ │ ├── models.py # SQLAlchemy 数据模型 │ │ ├── schemas.py # Pydantic 数据校验 │ │ ├── auth.py # JWT 认证逻辑 │ │ ├── init_db.py # 数据库初始化(含默认数据) │ │ └── routers/ # API 路由模块 │ │ ├── auth.py │ │ ├── texts.py │ │ ├── practice.py │ │ ├── leaderboard.py │ │ ├── admin.py │ │ ├── notifications.py │ │ └── config.py │ ├── tests/ # 测试用例 │ ├── Dockerfile │ └── requirements.txt ├── frontend/ # 前端应用 │ ├── src/ │ │ ├── views/ # 页面视图 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── router/ # Vue Router 配置 │ │ ├── utils/ # 工具函数 │ │ └── types/ # TypeScript 类型定义 │ ├── index.html │ ├── vite.config.ts │ ├── tailwind.config.js │ ├── tsconfig.json │ └── Dockerfile ├── docker-compose.yml └── README.md
cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
后端默认运行在 http://127.0.0.1:8000
cd frontend
npm install
npm run dev
前端默认运行在 http://localhost:5173
打开浏览器访问前端地址,即可开始使用。
启动服务后会自动初始化默认数据:
| 角色 | 邮箱 | 密码 |
|---|---|---|
| 管理员 | admin@typing.com | w123456 |
docker-compose up --build
部署完成后访问 http://localhost
后端启动后,可访问自动生成的 API 文档:
http://127.0.0.1:8000/docshttp://127.0.0.1:8000/redoccd backend
pytest tests/