Swee-官网
Swee 官网是 Swee AI 社交娱乐平台的品牌展示网站,基于 Next.js 13 构建。作为平台的对外门户,集成了品牌展示、应用下载引导、多语言支持、用户认证、SEO 优化等核心功能,同时承载账户管理(注销等)等关键用户操作。
一、项目技术架构
1.1 整体架构图
1.2 核心技术栈
| 领域 | 技术选型 | 版本 |
|---|---|---|
| 框架 | Next.js (Pages Router) | 13.4.1 |
| UI 库 | React + HeroUI | 18.x / 2.7.5 |
| 状态管理 | Recoil | 0.7.6 |
| 样式 | Tailwind CSS + SCSS | 3.4.10 |
| 动画 | Framer Motion + Swiper | 11.3.30 / 11.0.5 |
| 国际化 | next-i18next + i18next | 15.3.1 / 23.16.5 |
| HTTP | Axios (via @swee/request) | 1.3.3 |
| 错误监控 | Sentry | 7.105.0 |
| 日志 | Pino | 8.11.0 |
| 移动调试 | VConsole | 3.15.1 |
| 部署 | Docker + PM2 + K8s | - |
1.3 Provider 嵌套架构
二、核心功能模块
2.1 页面路由结构
| 路由 | 功能 | 说明 |
|---|---|---|
/ | 品牌首页 | Swiper 轮播 + 下载引导 |
/contact | 联系我们 | 商务联系信息 |
/profile/settings/close | 账户注销 | 需登录保护 |
/dev | 开发测试 | 组件调试页面 |
/login-test | 登录测试 | 登录流程测试 |
2.2 品牌首页
首页采用全屏 Swiper 轮播设计,支持:
- 3 组 Banner 配置:每组包含标题、描述文案和对应背景图
- 自动播放:5 秒间隔自动切换
- 鼠标滚轮控制:
mousewheel模块实现滚轮切换 - 无限循环:
loop模式无缝衔接 - 响应式背景:Mobile/Desktop 加载不同尺寸背景图
2.3 灵活的页面配置系统
每个页面支持声明式配置,通过 NextPageWithLayout 类型扩展:
通过 TypeScript 类型扩展 NextPage,实现页面级别的布局、权限、滚动条等配置声明化,避免在每个页面中重复编写逻辑代码。
type NextPageWithLayout = NextPage & {
Layout?: React.FC<any>; // 自定义布局组件
Wrapper?: React.FC<PropsWithChildren>; // 自定义包装组件
hideHeader?: boolean; // 隐藏导航头部
showScrollBar?: boolean; // 显示滚动条
pure?: boolean; // 纯组件模式(无 Layout)
needLogin?: boolean; // 需要登录保护
};
2.4 认证与账户管理
- 统一认证:通过
@swee/login的AuthProvider实现 - 多方式登录:邮箱密码、邮箱验证码、Google OAuth、Web3 签名
- 条件登录保护:页面配置
needLogin后自动弹出登录弹窗 - 账户注销:
useDeleteAccountHook +SweeModal二次确认
三、国际化方案
3.1 三语言支持
| 语言 | 代码 | 说明 |
|---|---|---|
| 英文 | en-US | 默认语言 |
| 繁体中文 | zh-TW | 台湾市场 |
| 印尼语 | id-ID | 东南亚市场 |
3.2 实现架构
必须设置 localeDetection: false 禁用自动语言检测。如果开启,搜索引擎爬虫会因为自动重定向而无法正确索引各语言版本的页面,严重影响 SEO 效果。
- 禁用自动语言检测:
localeDetection: false,避免爬虫问题 - SSG 翻译注入:每个页面通过
getStaticProps = getTranslationStaticProps预注入翻译 - 客户端按需加载:使用
i18next-http-backend在客户端异步加载
四、样式与设计系统
4.1 多层样式架构
4.2 关键样式配置
项目采用四层样式架构:Tailwind CSS 原子化 → HeroUI 组件库 → @swee/uikit 品牌预设 → SCSS 模块。通过 darkMode: 'class' 实现全站默认深色主题,配合 @swee/uikit 的 green-gradient 品牌渐变色统一视觉风格。
- 暗色主题:
darkMode: 'class',全站默认深色背景 - 品牌渐变色:
bg-gradient来自@swee/uikit的 green-gradient - 自定义断点:新增
xs: 475px断点适配小屏设备 - 骨架屏配色:自定义
react-loading-skeleton深色模式变量 - 图片长缓存:
/images/*设置max-age=31536000, immutable
五、API 代码生成
5.1 OpenAPI 自动化
从 https://swee-gateway.x3live.info/swee-user/v3/api-docs 自动生成:
- 登录/注册 API(邮箱密码、验证码、第三方)
- 用户信息管理 API
- 支付密码 API
- 账户删除 API
- 管理后台对接 API
六、错误监控与调试
6.1 Sentry 全链路监控
Sentry 同时覆盖 Client、Server、Edge 三端,实现全链路错误追踪。生产环境开启 10% 的 Session Replay 采样率,测试环境 100% 采样,并通过 maskAllText + blockAllMedia 确保用户隐私安全。
6.2 移动端调试
// 自动检测移动端 + Debug 模式,动态注入 VConsole
if (isClient && isDebug && isMobile) {
import('vconsole').then((Vconsole) => new Vconsole.default());
}
七、部署架构
7.1 Docker 多阶段构建
7.2 Kubernetes 多环境部署
| 环境 | 命名空间 | 域名 |
|---|---|---|
| 测试 | swee-test | swee.x3live.info |
| 生产 | swee-prod | swee.xyz |
资源配置:内存 1Gi request / 2Gi limit,临时存储 10Gi
八、技术亮点总结
8.1 智能响应式设计
- Mobile / Desktop 分别加载不同背景图,避免移动端加载大图
- 自动检测 UA 实现移动端重定向到
/mobile
8.2 SEO 优化策略
通过 SSG 静态生成 + Google Site Verification + 自定义 CDN 字体加载 + 合理 meta 标签配置,确保搜索引擎可完整抓取多语言页面内容,提升品牌站点的搜索可见性。
- Google Site Verification 验证搜索控制台
- SSG 静态生成确保爬虫可抓取
- 自定义 Font 从 CDN 加载(
static.swee.live) - 合理的 meta 标签配置
8.3 高效的图片管理
- TinyPNG 批量压缩脚本
- 永久缓存策略(1 年 immutable)
- 支持多种格式(JPEG, PNG, GIF, SVG, AVIF, HEIC, WebP)
8.4 工程化实践
- Monorepo 共享:6 个 @swee 公共包集成
- OpenAPI 代码生成:API 类型自动同步后端
- 组件脚手架:
pnpm cc快速创建标准化组件 - 翻译管理:Excel 翻译总表 + 自动化脚本
8.5 Pino 日志系统
- 生产环境使用 Pino 高性能 JSON 日志
- 支持日志级别控制
九、项目数据概览
| 指标 | 数据 |
|---|---|
| 页面路由 | 5 个 |
| 视图组件 | 4 个 |
| 公共包依赖 | 6 个 @swee 包 |
| 支持语言 | 3 种(en-US / zh-TW / id-ID) |
| 环境配置 | 3 套(dev / test / production) |
| Sentry 覆盖 | Client + Server + Edge 三端 |
| 静态资源缓存 | 1 年 immutable |
| 部署方式 | Docker + K8s + PM2 |