技术栈
Frontend
| 类别 | 技术 |
|---|---|
| 框架 | Next.js 15 (App Router) |
| UI | React 19, Tailwind CSS 3.4 |
| 动画 | Framer Motion, React Spring, tsparticles |
| 认证 | NextAuth.js 4.24(Credentials + Google + Azure AD) |
| 实时 | socket.io-client 4.8 |
| 主题 | NEXT_PUBLIC_THEME → spring / mario |
Backend
| 类别 | 技术 |
|---|---|
| 运行时 | Node.js 18+, Express 5 |
| 语言 | TypeScript ESM |
| 实时 | Socket.IO 4.8 |
| 状态 | Redis 5.6 (node-redis) |
| 持久化 | Prisma 6.19 + PostgreSQL |
| 认证 | jsonwebtoken |
新增模块(相对早期版本)
| 模块 | 路径 | 职责 |
|---|---|---|
| LoginCode | backend/src/lib/login-code.ts | 6 位码生成/校验/广播 |
| PlayerRegistry | backend/src/lib/player-registry.ts | UUID→显示名映射 |
| Auth Route | backend/src/routes/auth.ts | verify-code API |
| Player ID | frontend/src/lib/player-id.ts | localStorage UUID |
| Login UI | frontend/src/components/game/login/ | CnLoginPanel 等 |
| Theme | frontend/src/lib/theme.ts | 主题枚举 |
测试
| 脚本 | 用途 |
|---|---|
flood-test/heavy-load-test.js | 高并发 Socket |
flood-test/code-login-test.js | 登录码验证压测 |
flood-test/e2e-code-game-load-test.js | 登录码 + 游戏 E2E 负载 |
上游与参考
本文档描述部内抽奖系统的架构与扩展方式;下列开源项目的 API、配置与版本说明以官方为准。
| 项目 | 官方文档 | 源码 |
|---|---|---|
| Next.js | nextjs.org/docs | vercel/next.js |
| React | react.dev | facebook/react |
| Express | expressjs.com | expressjs/express |
| Socket.IO | socket.io/docs/v4 | socketio/socket.io |
| Redis | redis.io/docs | redis/redis |
| PostgreSQL | postgresql.org/docs | postgres/postgres |
| Prisma | prisma.io/docs | prisma/prisma |
| NextAuth.js | next-auth.js.org | nextauthjs/next-auth |
| Tailwind CSS | tailwindcss.com/docs | tailwindlabs/tailwindcss |
目录
lottery/
├── frontend/
├── backend/
├── flood-test/
└── docs/