Files
SatoNano/frontend/README.md
2026-01-06 23:49:23 +08:00

138 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SatoNano Frontend
现代化的用户认证系统前端,基于 Next.js 15 构建。
## 快速开始
### 1. 安装依赖
```bash
cd frontend
npm install
```
### 2. 启动开发服务器
确保后端服务已启动在 `http://localhost:8000`,然后:
```bash
npm run dev
```
前端将运行在 `http://localhost:3000`API 请求会自动代理到后端。
### 3. 配置 OAuth2可选
如果需要使用 Linux.do OAuth2 登录:
1. 在 Linux.do 开发者后台注册应用
2. 设置回调 URL 为:
- 开发环境:`http://localhost:3000/oauth2/callback`
- 生产环境:`https://your-domain.com/oauth2/callback`
3. 更新 `config.yaml` 中的 OAuth2 配置
## 技术栈
- **框架**: Next.js 15 (App Router)
- **语言**: TypeScript
- **样式**: Tailwind CSS
- **状态管理**: Zustand
- **表单处理**: React Hook Form + Zod
- **动画**: Framer Motion
- **图标**: Lucide Icons
## 开发
### 安装依赖
```bash
npm install
# 或
pnpm install
```
### 启动开发服务器
```bash
npm run dev
```
开发环境下API 请求会自动代理到 `http://localhost:8000`
### 构建生产版本
```bash
npm run build
```
构建后的静态文件将输出到 `out` 目录。
## 项目结构
```
frontend/
├── src/
│ ├── app/ # Next.js App Router 页面
│ │ ├── dashboard/ # 用户控制台
│ │ ├── login/ # 登录页
│ │ ├── register/ # 注册页
│ │ ├── oauth2/ # OAuth2 回调
│ │ ├── globals.css # 全局样式
│ │ ├── layout.tsx # 根布局
│ │ └── page.tsx # 首页
│ ├── components/ # React 组件
│ │ ├── ui/ # 通用 UI 组件
│ │ ├── auth/ # 认证相关组件
│ │ └── dashboard/ # Dashboard 组件
│ └── lib/ # 工具库
│ ├── api.ts # API 服务层
│ ├── store.ts # 状态管理
│ ├── utils.ts # 工具函数
│ └── validations.ts # 表单验证
├── public/ # 静态资源
├── next.config.ts # Next.js 配置
├── tailwind.config.ts # Tailwind 配置
└── tsconfig.json # TypeScript 配置
```
## 开发/生产环境
### 开发环境
- 前端运行在 `http://localhost:3000`
- API 请求通过 Next.js 的 rewrites 代理到后端 `http://localhost:8000`
- 支持热重载
### 生产环境
构建后输出静态文件到 `out` 目录,由后端 FastAPI 服务托管:
1. 构建前端:`npm run build`
2. 静态文件会被输出到 `frontend/out/`
3. 后端会自动挂载该目录作为静态文件服务
4. 前后端位于同一域名,无跨域问题
### OAuth2 配置说明
OAuth2 登录流程:
```
用户点击登录 → 前端获取授权URL → 重定向到Linux.do →
用户授权 → 重定向回前端/oauth2/callback → 前端调用后端API →
获取JWT令牌 → 登录成功
```
**重要**:确保 `config.yaml` 中的 `oauth2_callback_path` 设置为 `/oauth2/callback`(前端路由),而非后端 API 路径。
## 功能特性
- ✅ 用户登录/注册
- ✅ OAuth2 第三方登录 (Linux.do)
- ✅ JWT 令牌自动刷新
- ✅ 个人资料管理
- ✅ 密码修改
- ✅ 响应式设计
- ✅ 深色主题
- ✅ 动画效果