Skip to content

Commit ef3bf81

Browse files
committed
fix: build
1 parent fc01544 commit ef3bf81

20 files changed

Lines changed: 721 additions & 611 deletions

.cursorrules

Lines changed: 166 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,97 @@
1-
# RustFS.com 项目 Cursor Rules
1+
# RustFS.com 项目开发规范
22

3-
## 核心目标
4-
这套 Cursor rule 适用于所有编程任务,要求工程师以**高级工程师的视角**,严格按照流程执行任务,确保代码改动精准、高效,且不会引入问题或不必要的复杂性。
3+
## 📋 项目概述
54

6-
## 规则的五个关键步骤
5+
RustFS.com 是一个基于 Next.js 的现代化分布式存储系统官网,采用 TypeScript + Tailwind CSS 技术栈,支持深色模式和响应式设计。
76

8-
### 1. 明确任务范围
9-
- 在写代码前,先分析任务,明确目标
10-
- 制定清晰的计划,列出需要修改的函数、模块或组件,并说明原因
11-
- 只有在计划清晰且经过深思熟虑后,才开始写代码
7+
## 🎯 核心开发原则
128

13-
### 2. 精准定位代码修改点
14-
- 确定需要修改的具体文件和代码行
15-
- 避免无关文件的改动,若涉及多个文件,需明确说明每个文件的改动理由
16-
- 除非任务明确要求,否则不创建新抽象或重构代码
9+
### 五大执行步骤
1710

18-
### 3. 最小化、隔离化的代码改动
19-
- 只编写任务直接所需的代码
20-
- 避免添加不必要的日志、注释、测试、待办事项或错误处理
21-
- 不要进行"顺手"的额外修改,确保新代码不干扰现有功能
11+
#### 1. 任务分析与规划
12+
- **明确目标**:在开始编码前,深入理解任务需求和预期结果
13+
- **制定计划**:列出需要修改的具体文件、组件和函数,说明修改原因
14+
- **风险评估**:评估改动对现有功能的影响,制定回滚方案
2215

23-
### 4. 严格检查代码
24-
- 检查代码的正确性、是否符合任务范围,以及是否会引发副作用
25-
- 确保代码与现有代码风格一致,防止破坏已有功能
26-
- 评估改动是否会影响下游系统
16+
#### 2. 精准代码定位
17+
- **文件识别**:确定需要修改的具体文件和代码行号
18+
- **影响分析**:避免无关文件的改动,明确每个文件的修改理由
19+
- **最小化原则**:除非任务明确要求,否则不创建新的抽象层或重构现有代码
2720

28-
### 5. 清晰交付成果
29-
- 总结改动的具体内容和原因
30-
- 列出所有修改的文件及其具体变更
31-
- 说明任何假设或潜在风险,供他人审查
21+
#### 3. 最小化代码改动
22+
- **专注核心**:只编写任务直接所需的代码
23+
- **避免冗余**:不添加不必要的日志、注释、测试或错误处理
24+
- **隔离性**:确保新代码不会干扰现有功能,保持代码的独立性
3225

33-
## 核心原则
34-
- **不即兴发挥**:严格按照任务要求执行,不随意创新
35-
- **不过度设计**:避免复杂化,只做必要的工作
36-
- **不偏离规则**:始终遵循这套流程,确保代码安全、可靠
26+
#### 4. 严格代码审查
27+
- **正确性检查**:验证代码逻辑的正确性和完整性
28+
- **风格一致性**:确保代码符合项目既定的编码风格
29+
- **副作用评估**:评估改动对下游系统的影响
30+
31+
#### 5. 清晰交付文档
32+
- **变更总结**:详细说明所有修改的内容和原因
33+
- **文件清单**:列出所有修改的文件及其具体变更
34+
- **风险说明**:标注任何假设或潜在风险点
35+
36+
### 核心原则
37+
- **🎯 精准执行**:严格按照任务要求执行,不随意创新
38+
- **⚡ 高效开发**:避免过度设计,只做必要的工作
39+
- **🛡️ 安全可靠**:始终遵循开发流程,确保代码质量和系统稳定性
40+
- **🔒 谨慎修改**:明确知道需要修改才改,没把握就不要动已有的代码
3741

3842
---
3943

40-
## 项目技术规范
44+
## 🛠️ 技术栈规范
4145

42-
### 技术栈
46+
### 核心技术
4347
- **框架**: Next.js 15.3.4 (App Router)
44-
- **语言**: TypeScript (ES2017+)
45-
- **UI**: Tailwind CSS 4 + shadcn/ui
48+
- **语言**: TypeScript (ES2017+, 严格模式)
49+
- **样式**: Tailwind CSS 4 + shadcn/ui
4650
- **图标**: Lucide React
47-
- **主题**: next-themes (支持深色模式)
51+
- **主题**: next-themes (深色模式支持)
4852
- **动画**: motion + tw-animate-css
4953
- **国际化**: 中文为主 (lang="zh-CN")
5054

51-
### 项目结构约定
55+
### 项目目录结构
5256
```
53-
app/ # Next.js App Router 目录
54-
├── components/ # 页面级组件
55-
│ ├── buttons/ # 按钮组件
56-
│ └── *.tsx # 功能组件
57-
├── layout.tsx # 根布局
58-
├── page.tsx # 首页
59-
└── globals.css # 全局样式
60-
61-
components/ # 通用组件库
62-
├── ui/ # shadcn/ui 组件
63-
└── magicui/ # 自定义 UI 组件
64-
65-
data/ # 静态数据
66-
├── features.tsx # 产品功能数据
67-
├── reviews.json # 用户评价
68-
└── *.json # 其他配置数据
69-
70-
lib/ # 工具函数
71-
└── utils.ts # Tailwind merge 等工具
72-
73-
public/ # 静态资源
74-
├── images/ # 图片资源
75-
└── svgs/ # SVG 图标
57+
rustfs.com/
58+
├── app/ # Next.js App Router 目录
59+
│ ├── components/ # 页面级组件
60+
│ │ ├── buttons/ # 按钮组件集合
61+
│ │ └── *.tsx # 功能组件
62+
│ ├── download/ # 下载页面
63+
│ ├── layout.tsx # 根布局
64+
│ ├── page.tsx # 首页
65+
│ └── globals.css # 全局样式
66+
├── components/ # 通用组件库
67+
│ ├── ui/ # shadcn/ui 组件
68+
│ └── magicui/ # 自定义 UI 组件
69+
├── data/ # 静态数据
70+
│ ├── features.tsx # 产品功能数据
71+
│ ├── reviews.json # 用户评价
72+
│ └── *.json # 其他配置数据
73+
├── lib/ # 工具函数
74+
│ └── utils.ts # Tailwind merge 等工具
75+
└── public/ # 静态资源
76+
├── images/ # 图片资源
77+
└── svgs/ # SVG 图标
7678
```
7779

78-
### 代码风格规范
80+
---
81+
82+
## 📝 编码规范
83+
84+
### TypeScript 规范
85+
- **严格模式**: 启用 `"strict": true` 配置
86+
- **语法版本**: 优先使用 ES2017+ 语法特性
87+
- **组件定义**: 使用箭头函数或 `export default function`
88+
- **类型导入**: 使用 `import type { }` 语法
7989

80-
#### TypeScript 约定
81-
- 使用严格模式 (`"strict": true`)
82-
- 优先使用 ES2017+ 语法
83-
- 函数组件使用箭头函数或 `export default function`
84-
- 类型导入使用 `import type { }`
90+
### React 组件规范
8591

86-
#### React 组件规范
92+
#### 标准组件结构
8793
```typescript
88-
// ✅ 推荐的组件结构
89-
'use client' // 客户端组件需要标注
94+
'use client' // 客户端组件必须标注
9095

9196
import { ComponentProps } from 'react'
9297
import { cn } from '@/lib/utils'
@@ -109,42 +114,11 @@ export default function ComponentName({
109114
}
110115
```
111116

112-
#### Tailwind CSS 规范
113-
- 使用 `cn()` 函数合并类名
114-
- 优先使用 Tailwind 类,避免自定义 CSS
115-
- 响应式设计:`sm:` `md:` `lg:` `xl:`
116-
- 深色模式:`dark:` 前缀
117-
- 主题色彩:`primary` `secondary` `muted-foreground` 等语义化颜色
118-
119-
#### 样式约定
120-
```typescript
121-
// ✅ 正确的样式写法
122-
className={cn(
123-
"base-classes",
124-
"responsive sm:class md:class lg:class",
125-
"dark:class dark:hover:class",
126-
conditionalClass && "conditional-class",
127-
className // 允许外部覆盖
128-
)}
129-
```
130-
131-
### 内容规范
132-
- **语言**: 所有用户界面文本使用中文
133-
- **术语**: 统一使用 "RustFS" (不是 rustfs 或 Rustfs)
134-
- **链接**: 文档链接统一指向 `https://docs.rustfs.com`
135-
- **品牌**: 保持与分布式存储系统的专业形象一致
136-
137-
### 文件命名约定
138-
- 组件文件:`kebab-case.tsx` (如 `app-header.tsx`)
139-
- 数据文件:`kebab-case.json` 或 `.tsx`
140-
- 工具函数:`camelCase.ts`
141-
- 页面文件:遵循 Next.js App Router 约定
142-
143-
### 导入顺序
117+
#### 导入顺序规范
144118
```typescript
145119
// 1. React 相关
146120
import React from 'react'
147-
import { useState } from 'react'
121+
import { useState, useEffect } from 'react'
148122

149123
// 2. Next.js 相关
150124
import Link from 'next/link'
@@ -162,38 +136,101 @@ import { Button } from '@/components/ui/button'
162136
import type { ComponentProps } from 'react'
163137
```
164138

165-
### 性能要求
166-
- 图片使用 Next.js `Image` 组件优化
167-
- 客户端组件最小化,优先服务端渲染
168-
- 懒加载大型组件和数据
169-
- 避免不必要的重渲染
170-
171-
### 禁止事项
172-
- ❌ 不要修改 `components.json` shadcn/ui 配置
173-
- ❌ 不要在组件中硬编码数据,使用 `data/` 目录
174-
- ❌ 不要破坏现有的深色模式支持
175-
- ❌ 不要使用内联样式,统一使用 Tailwind
176-
- ❌ 不要忽略 TypeScript 类型错误
177-
- ❌ 不要修改已有的 API 接口和配置结构
178-
179-
### 提交要求
180-
- 每次修改需要说明影响的组件和页面
181-
- 确保深色模式正常工作
182-
- 确保响应式布局不被破坏
183-
- 验证中文内容显示正确
139+
### Tailwind CSS 规范
140+
141+
#### 样式编写约定
142+
```typescript
143+
// ✅ 推荐的样式写法
144+
className={cn(
145+
"base-classes",
146+
"responsive sm:class md:class lg:class",
147+
"dark:class dark:hover:class",
148+
conditionalClass && "conditional-class",
149+
className // 允许外部覆盖
150+
)}
151+
```
152+
153+
#### 响应式设计
154+
- **断点**: `sm:` (640px) `md:` (768px) `lg:` (1024px) `xl:` (1280px)
155+
- **深色模式**: 使用 `dark:` 前缀
156+
- **主题色彩**: 使用语义化颜色 `primary` `secondary` `muted-foreground`
157+
158+
### 文件命名规范
159+
- **组件文件**: `kebab-case.tsx` (如 `app-header.tsx`)
160+
- **数据文件**: `kebab-case.json` 或 `.tsx`
161+
- **工具函数**: `camelCase.ts`
162+
- **页面文件**: 遵循 Next.js App Router 约定
163+
164+
---
165+
166+
## 🎨 内容与品牌规范
167+
168+
### 语言与术语
169+
- **界面语言**: 所有用户界面文本使用中文
170+
- **品牌名称**: 统一使用 "RustFS" (首字母大写)
171+
- **文档链接**: 统一指向 `https://docs.rustfs.com`
172+
- **品牌形象**: 保持分布式存储系统的专业形象
173+
174+
### 性能优化要求
175+
- **图片优化**: 使用 Next.js `Image` 组件
176+
- **服务端渲染**: 优先使用 SSR,最小化客户端组件
177+
- **懒加载**: 对大型组件和数据实施懒加载
178+
- **重渲染优化**: 避免不必要的组件重渲染
184179

185180
---
186181

187-
## 执行检查清单
182+
## ⚠️ 禁止事项
188183

189-
在每次代码改动前,请确认:
190-
1. ✅ 已明确理解任务目标和范围
191-
2. ✅ 已制定清晰的修改计划
192-
3. ✅ 代码符合项目技术规范
193-
4. ✅ 遵循组件和样式约定
194-
5. ✅ 不会破坏现有功能
195-
6. ✅ 通过 TypeScript 类型检查
196-
7. ✅ 响应式和深色模式兼容
197-
8. ✅ 中文内容正确显示
184+
### 严格禁止
185+
- ❌ 修改 `components.json` shadcn/ui 配置文件
186+
- ❌ 在组件中硬编码数据,必须使用 `data/` 目录
187+
- ❌ 破坏现有的深色模式支持
188+
- ❌ 使用内联样式,统一使用 Tailwind CSS
189+
- ❌ 忽略 TypeScript 类型错误
190+
- ❌ 修改已有的 API 接口和配置结构
191+
192+
### 开发注意事项
193+
- ❌ 不要进行"顺手"的额外修改
194+
- ❌ 不要添加不必要的日志或注释
195+
- ❌ 不要创建任务范围外的抽象层
196+
- ❌ **不要修改已有代码,除非明确知道需要修改**
197+
- ✅ **只有在明确知道需要修改且有把握的情况下才改动现有代码**
198+
199+
---
200+
201+
## 📋 质量检查清单
202+
203+
### 代码改动前检查
204+
1. ✅ **任务理解**: 已明确理解任务目标和范围
205+
2. ✅ **计划制定**: 已制定清晰的修改计划
206+
3. ✅ **技术规范**: 代码符合项目技术规范
207+
4. ✅ **编码风格**: 遵循组件和样式约定
208+
5. ✅ **功能保护**: 不会破坏现有功能
209+
6. ✅ **类型安全**: 通过 TypeScript 类型检查
210+
7. ✅ **响应式兼容**: 响应式布局和深色模式兼容
211+
8. ✅ **内容正确**: 中文内容显示正确
212+
9. ✅ **修改必要性**: 明确知道需要修改且有把握
213+
214+
### 提交前验证
215+
- ✅ 所有修改的文件已列出
216+
- ✅ 深色模式功能正常
217+
- ✅ 响应式布局无异常
218+
- ✅ 中文内容显示正确
219+
- ✅ 无 TypeScript 错误
220+
- ✅ 无控制台警告
221+
222+
---
223+
224+
## 🎯 核心要求
225+
226+
**精准、高效、不引入复杂性** - 这是我们的开发准则。
227+
228+
每次代码改动都应该:
229+
- 🎯 **精准**: 只修改任务要求的代码
230+
- ⚡ **高效**: 避免不必要的复杂化
231+
- 🛡️ **安全**: 确保系统稳定性和代码质量
232+
- 🔒 **谨慎**: 明确知道需要修改才改,没把握就不要动已有的代码
233+
234+
---
198235

199-
记住:**精准、高效、不引入复杂性** 是我们的核心要求。
236+
*最后更新: 2024年12月*

LICENSE

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
MIT License
2+
3+
Copyright (c) 2024 rustfs team
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
22+
23+
For questions or support, please contact: hello@rustfs.com

0 commit comments

Comments
 (0)