一个基于 React + TypeScript + TanStack Router + TanStack Query + Tailwind CSS 构建的现代化在线考试平台。
- 前端框架: React 19
- 类型安全: TypeScript
- 构建工具: Vite 7
- 路由管理: TanStack Router
- 状态管理: TanStack Query
- 样式框架: Tailwind CSS 4.x
- UI 组件: 自定义组件库 (参考 shadcn/ui)
- 包管理器: npm
-
🏠 宣传页面
- 产品介绍和功能展示
- 响应式设计
- 导航到登录/注册页面
-
🔐 用户认证
- 用户注册(表单验证、密码强度检测)
- 用户登录(密码可见性切换)
- 认证状态管理
-
📊 个人仪表板
- 个人信息展示
- 考试安排概览
- 课程进度跟踪
- 错题统计
- 学习数据可视化
-
🎯 核心模块
- 考试安排管理
- 课程详情查看
- 错题收集与分析
- 在线考试功能
- 实时评分系统
- 成绩统计分析
- 用户设置页面
- 后端 API 集成
src/
├── components/ # 可复用组件
│ └── ui/ # 基础 UI 组件
├── pages/ # 页面组件
│ ├── home-modern.tsx # 现代化首页
│ ├── login.tsx # 登录页
│ ├── sign.tsx # 注册页
│ ├── dashboard.tsx # 仪表板
│ ├── exam.tsx # 考试页面
│ ├── exam-prep.tsx # 考试准备页
│ ├── exam-result.tsx # 考试结果页
│ ├── course-detail.tsx # 课程详情页
│ ├── notifications.tsx # 通知中心
│ └── announcement-detail.tsx # 公告详情页
├── hooks/ # 自定义 Hooks
│ ├── useAuth.tsx # 认证相关
│ ├── useQueries.ts # 数据查询
│ └── useMutations.ts # 数据修改
├── lib/ # 工具库
│ ├── utils.ts # 通用工具函数
│ └── api.ts # API 接口
├── types/ # TypeScript 类型定义
│ └── index.ts # 全局类型
├── router.tsx # 路由配置
├── App.tsx # 应用入口
└── main.tsx # 程序入口
- Node.js >= 18
- npm >= 8
npm installnpm run dev访问 http://localhost:5173 查看应用。
npm run buildnpm run lint项目使用了类似 shadcn/ui 的设计系统:
- 颜色系统: 基于 HSL 的主题色彩变量
- 组件设计: 可组合的 UI 组件
- 响应式: 移动端优先的响应式设计
- 深色模式: 支持深浅主题切换(配置中)
| 路径 | 页面 | 说明 |
|---|---|---|
/ |
宣传页 | 产品介绍和功能展示 |
/login |
登录页 | 用户登录 |
/sign |
注册页 | 用户注册 |
/dashboard |
仪表板 | 用户个人中心 |
项目使用 Tailwind CSS 4.x,配置文件位于 tailwind.config.js,包含:
- 自定义颜色变量
- 圆角半径设置
- 响应式断点
- 路径别名:
@/*指向src/* - 严格模式启用
- 模块解析优化
- 组件开发: 所有 UI 组件都位于
src/components/ui/ - 类型安全: 使用 TypeScript 确保类型安全
- 状态管理: 使用 TanStack Query 管理服务器状态
- 路由管理: 使用 TanStack Router 进行类型安全的路由
- 样式规范: 使用 Tailwind CSS 工具类
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如有问题或建议,请提交 Issue 或联系开发团队。 { files: ['**/*.{ts,tsx}'], extends: [ // Other configs... // Enable lint rules for React reactX.configs['recommended-typescript'], // Enable lint rules for React DOM reactDom.configs.recommended, ], languageOptions: { parserOptions: { project: ['./tsconfig.node.json', './tsconfig.app.json'], tsconfigRootDir: import.meta.dirname, }, // other options... }, }, ])