
Quant-交易平台官网项目
OpenQuant 是一个基于 **Nuxt 3** 和 **TypeScript** 构建的现代化加密货币量化交易平台官网。该项目采用**全栈架构**设计,集成了完整的用户认证、数据管理、定时任务调度等功能,前后端一体化开发。
🚀 Quant-交易平台官网项目
📋 项目概述
OpenQuant 是一个基于 Nuxt 3 和 TypeScript 构建的现代化加密货币量化交易平台官网。该项目采用全栈架构设计,集成了完整的用户认证、数据管理、定时任务调度等功能,前后端一体化开发。
🌟 项目亮点
- 全栈开发:Nuxt 3 + Nitro Server + Prisma ORM,前后端一体化
- 企业级认证:JWT 双 token + 设备指纹识别 + Redis 限流
- 数据可视化:ECharts 图表 + 实时数据看板
- 完整部署:Docker + Docker Compose + Supervisor 进程管理
效果预览
动画效果以及完整内容请点击在线演示浏览
部分截图




🛠️ 技术架构
前端技术栈
| 技术 | 版本 | 用途 |
|---|---|---|
| Nuxt.js | 3.17.6 | 全栈框架 |
| Vue.js | 3.5.17 | 前端框架 |
| TypeScript | 5.6.3 | 类型安全 |
| Tailwind CSS | 3.4.17 | 样式框架 |
| Element Plus | 2.10.2 | UI 组件库 |
| ECharts | 5.6.0 | 数据可视化 |
| Axios | 1.10.0 | HTTP 客户端 |
| VueUse | 13.5.0 | 组合式工具集 |
后端技术栈
| 技术 | 用途 |
|---|---|
| Nitro Server | Nuxt 3 内置服务端 |
| Prisma ORM | 数据库 ORM |
| MySQL 8.0 | 关系型数据库 |
| Redis 7.0 | 缓存和会话管理 |
| JWT | 身份认证 |
| Winston | 日志管理 |
| Node-Schedule | 定时任务调度 |
| MinIO | 对象存储 |
🎯 核心功能
1️⃣ 完善的认证授权体系
双 Token 机制
typescript
// 短效 Access Token(30分钟)
export const generateAccessToken = (user) => {
return pkg.sign(
{ userId, userName, email },
secret,
{ expiresIn: '30m' }
)
}
// 长效 Refresh Token(7天)
export const generateRefreshToken = () => {
return randomBytes(32).toString('hex')
}
🔐 安全防护措施
| 措施 | 说明 |
|---|---|
| Redis 限流 | 同一设备连续登录失败 5 次锁定 5 分钟 |
| 密码加密 | bcrypt 加盐哈希存储 |
| Cookie 保护 | HttpOnly + SameSite |
| 设备指纹 | 基于 CryptoJS SHA256 生成,设备异常自动登出 |
| Token 持久化 | 存储到 MySQL,支持多设备管理 |
2️⃣ 数据管理模块
用户管理
- ✅ 基于 Prisma 的 CRUD 操作
- ✅ 分页查询、模糊搜索
- ✅ 角色权限管理(RBAC)
- ✅ 用户头像上传(MinIO 对象存储)
定时任务系统
typescript
export class TaskModel {
async createTask(task) { /* 创建任务 */ }
async getAllTasks() { /* 获取所有任务 */ }
async getTaskByStatus(status) { /* 按状态查询 */ }
}
- ✅ 任务创建、编辑、删除
- ✅ Cron 表达式调度
- ✅ 任务执行日志记录
- ✅ 支持手动触发、暂停、恢复
3️⃣ 数据可视化看板
首页数据展示
- ✅ 实时涨跌幅榜
- ✅ 数据轮播展示(ECharts 图表)
- ✅ 交互式卡片切换动画
- ✅ 响应式布局,适配多端
性能展示页面
| 组件 | 功能 |
|---|---|
| PriceCurve | 实盘收益曲线 |
| IncomeCalendar | 收益日历 |
| StrategyTable | 策略表格 |
| RealTimePerformance | 实时绩效数据 |
4️⃣ 请求封装与错误处理
typescript
export async function useAxiosFetch<T>(url, options) {
const { data, status, error, refresh } = await useAsyncData<T>(
cacheKey,
async () => await service.request({ url, ...options })
)
await handleRequestStatus({ status, error, refresh }, options)
return { data, error, status, refresh, inRequest }
}
✨ 核心特性
| 特性 | 说明 |
|---|---|
| 双重视角 | Axios + Nuxt useAsyncData 双重封装 |
| 自动重试 | 可配置重试次数 |
| 防抖通知 | 3 秒内不重复提示 |
| 统一处理 | 401/404/500 等错误统一处理 |
| Token 刷新 | 自动 Token 刷新机制 |
| 超时控制 | 可配置请求超时时间 |
5️⃣ 国际化与主题系统
🌍 多语言支持
- 基于 Nuxt i18n 模块
- 支持中英文切换
- 无前缀路由策略
- 语言偏好持久化到 Cookie
🎨 主题切换
typescript
export const useTheme = () => {
const isDark = ref(userTheme.value === 'dark' || colorMode.value === 'dark')
const toggleTheme = () => { isDark.value = !isDark.value }
return { isDark, toggleTheme, setTheme }
}
- 亮色 / 暗色主题切换
- Element Plus 主题适配
- 主题偏好持久化
🚢 部署方案
Docker 容器化部署
多阶段构建
dockerfile
# 构建阶段
FROM node:20-alpine AS builder
RUN pnpm prisma generate && pnpm build
# 运行阶段
FROM node:20-alpine AS runner
# 集成 MySQL + Redis + Supervisor
📦 部署特性
| 特性 | 说明 |
|---|---|
| 服务编排 | Web + MySQL + Redis 完整架构 |
| 进程管理 | Supervisor 多进程守护 |
| 数据持久 | 数据卷持久化存储 |
| 健康检查 | 内置健康检查端点 |
| 一键启动 | docker-compose up -d |
💡 关键技术难点
1️⃣ SSR 与客户端状态同步
问题:Nuxt SSR 环境下,服务端渲染和客户端状态可能不一致
解决方案:
- 使用 Nuxt
useState在服务端和客户端共享状态 - 使用 Cookie 同步认证状态
- 设备指纹在客户端生成后持久化存储
2️⃣ 请求缓存与数据一致性
问题:Nuxt useAsyncData 缓存可能导致数据过期
解决方案:
typescript
function createCacheKey(url, options) {
const stableParams = JSON.stringify({ url, method, params, data })
return `api_${hashString(stableParams)}`
}
- 基于 URL + 参数生成稳定缓存 Key
- 支持手动
refresh()刷新数据 - 提供
immediate: false延迟加载选项
3️⃣ 设备指纹跨设备识别
问题:需要识别用户更换设备时的异常登录
解决方案:
- 收集硬件特征(CPU 核心数、GPU 信息)
- 收集环境特征(User-Agent、时区、存储能力)
- SHA256 哈希生成唯一设备 ID
- 设备 ID 不匹配时强制登出
⚡ 性能优化
| 优化项 | 方案 |
|---|---|
| 代码分割 | Nuxt 自动路由级代码分割 |
| 图片优化 | @nuxt/image 模块自动压缩和格式转换 |
| 缓存策略 | Redis 缓存用户会话、请求限流 |
| 数据库优化 | Prisma 查询优化、索引使用 |
| 日志管理 | Winston 按级别/日期分割日志文件 |
📝 开发规范
- ✅ 代码规范:ESLint + Prettier + Husky + Lint-staged
- ✅ 提交规范:Commitlint 规范提交信息
- ✅ 类型安全:全项目 TypeScript 类型定义
- ✅ 文档完善:详细的 README、架构文档、部署指南
📊 项目成果
| 指标 | 成果 |
|---|---|
| 代码质量 | ESLint 0 错误,TypeScript 类型覆盖率 100% |
| 功能完整性 | 覆盖用户管理、认证授权、任务调度、数据可视化等核心功能 |
| 部署便捷性 | 一键 Docker 部署,支持多环境配置 |
| 可维护性 | 模块化设计,职责清晰,易于扩展 |
🎓 技术总结
通过该项目,我深入实践了:
- ✅ Nuxt 3 全栈开发模式
- ✅ 企业级认证安全体系设计
- ✅ 大型前端项目架构设计
- ✅ 数据可视化与交互实现
- ✅ Docker 容器化部署
- ✅ 微服务化模块设计
这个项目展现了我在全栈开发、安全设计、性能优化等方面的综合能力。
项目信息
创建时间
2026年01月03日
更新时间
2026年03月06日
浏览量
6 次




