feat: 重构项目为模块化结构,拆分 CLAUDE.md 文档
All checks were successful
Deploy Frontend / deploy (push) Successful in 2m38s

## 📁 模块化重构

### 新增模块 CLAUDE.md
- `frontend/CLAUDE.md` - 前端开发指导 (Next.js, React, TypeScript)
- `docs/deployment/CLAUDE.md` - 部署配置指导 (Caddy, 服务器配置)
- `.gitea/workflows/CLAUDE.md` - CI/CD 流程指导 (Gitea Actions)

### 根目录 CLAUDE.md 优化
- 重构为项目概览和模块导航
- 提供模块选择指导
- 减少单个文件的上下文长度

### 自动化机制
- 创建 `scripts/update-claude-docs.sh` 自动更新脚本
- 集成到 pre-commit hooks 中
- 文件变更时自动更新对应模块的 CLAUDE.md

## 🎯 优化效果

### 上下文优化
- 每个模块独立的 CLAUDE.md 文件
- 大幅减少单次处理的上下文长度
- 提高 Claude 处理效率和准确性

### 开发体验
- 根据工作内容选择对应模块
- 模块化的文档更聚焦和专业
- 自动维护文档时间戳

### 项目结构
```
photography/
├── CLAUDE.md                    # 项目概览和模块导航
├── frontend/CLAUDE.md          # 前端开发指导
├── docs/deployment/CLAUDE.md   # 部署配置指导
├── .gitea/workflows/CLAUDE.md  # CI/CD 流程指导
└── scripts/update-claude-docs.sh # 自动更新脚本
```

现在 Claude 工作时只需关注单个模块的文档,大幅提升处理效率!
This commit is contained in:
xujiang
2025-07-09 10:54:08 +08:00
parent 87c34179fa
commit 9e381c783d
11 changed files with 1122 additions and 222 deletions

226
frontend/CLAUDE.md Normal file
View File

@ -0,0 +1,226 @@
# Frontend Module - CLAUDE.md
此文件为 Claude Code 在前端模块中工作时提供指导。
## 模块说明
这是摄影作品集项目的前端模块,使用 Next.js 15 + React 19 + TypeScript + Tailwind CSS 构建。
## 开发命令
**重要**: 所有命令都应在当前目录 (`frontend/`) 中运行,使用 bun 作为包管理器。
### 基础命令
```bash
# 安装依赖
make install
# 或者
bun install
# 开发服务器
make dev
# 或者
bun run dev
# 构建生产版本
make build
# 或者
bun run build
# 启动生产服务器
make start
# 或者
bun run start
```
### 代码质量
```bash
# 代码检查
make lint
# 或者
bun run lint
# 类型检查
make type-check
# 或者
bun run type-check
# 代码格式化
make format
# 或者
bun run format
```
### 快速命令
```bash
# 快速开始(安装依赖+启动开发)
make quick
# 部署准备(完整检查+构建)
make deploy-prep
```
## 技术栈
### 核心框架
- **Next.js 15** - React 框架,配置静态导出
- **React 19** - UI 库
- **TypeScript** - 类型安全
- **Tailwind CSS** - 样式框架
### 组件库
- **Radix UI** - 无障碍组件基础
- **shadcn/ui** - 预构建组件库
- **Lucide React** - 图标库
### 数据管理
- **TanStack Query v5** - 数据获取和缓存
- **Axios** - HTTP 客户端
- **React Hook Form + Zod** - 表单处理和验证
### 开发工具
- **ESLint** - 代码检查Next.js 严格模式)
- **Prettier** - 代码格式化
- **TypeScript** - 类型检查
- **Husky + lint-staged** - Git hooks
## 项目结构
```
frontend/
├── app/ # Next.js App Router
│ ├── globals.css # 全局样式
│ ├── layout.tsx # 根布局
│ └── page.tsx # 主页
├── components/ # React 组件
│ ├── ui/ # shadcn/ui 组件
│ ├── photo-gallery.tsx # 照片画廊
│ ├── navigation.tsx # 导航组件
│ └── ...
├── hooks/ # 自定义 hooks
├── lib/ # 工具库
│ ├── api.ts # API 配置
│ ├── queries.ts # TanStack Query hooks
│ └── utils.ts # 工具函数
├── public/ # 静态资源
├── styles/ # 样式文件
├── out/ # 静态导出输出 (构建后生成)
└── 配置文件...
```
## 关键组件
### 主要页面组件
- `app/page.tsx` - 主应用,包含照片画廊、时间轴、关于、联系页面
- `components/photo-gallery.tsx` - 基于网格的照片画廊,带悬停效果
- `components/navigation.tsx` - 粘性导航,带移动菜单
- `components/photo-modal.tsx` - 照片详情模态框,带导航
- `components/timeline-view.tsx` - 基于时间轴的照片展示
### UI 组件
- `components/ui/` - 来自 shadcn/ui 的可重用 UI 组件
- `components/theme-provider.tsx` - 主题提供者(深色模式支持)
- `components/loading-spinner.tsx` - 加载动画组件
### 数据层
- `lib/api.ts` - 使用 axios 的 API 配置
- `lib/queries.ts` - 用于数据获取的 TanStack Query hooks
- `hooks/use-mobile.tsx` - 移动端检测钩子
## 数据结构
```typescript
interface Photo {
id: number
src: string
title: string
description: string
category: string
tags: string[]
date: string
exif: {
camera: string
lens: string
settings: string
location: string
}
}
```
## 配置文件
### 核心配置
- **`next.config.mjs`** - Next.js 配置,静态导出设置
- **`tailwind.config.ts`** - Tailwind CSS 自定义主题
- **`tsconfig.json`** - TypeScript 配置,严格模式
- **`.eslintrc.json`** - ESLint 配置Next.js 严格模式
- **`.prettierrc`** - Prettier 代码格式化配置
### 包管理
- **`package.json`** - 项目依赖和脚本
- **`bun.lock`** - Bun 锁定文件
- **`Makefile`** - 开发命令快捷方式
## 环境配置
### 环境变量 (.env.local)
```bash
NEXT_PUBLIC_API_URL=http://localhost:3001/api
```
### Mock API
项目包含 Express 模拟 API (`mock-api.js`)
- `GET /api/photos` - 获取所有照片
- `GET /api/photos/:id` - 获取单个照片
- `GET /api/categories` - 获取分类列表
启动方式:`node mock-api.js`
## 部署配置
### 静态导出
- **输出目录**: `out/`
- **导出模式**: 静态文件(`output: 'export'`
- **图像优化**: 禁用(`unoptimized: true`
### 构建优化
- 构建时跳过 ESLint 和 TypeScript 错误(开发配置)
- 自动生成静态 HTML 文件
- 支持 SPA 路由(`trailingSlash: true`
## 开发工作流
### 首次设置
```bash
make setup # 创建环境变量文件
make install # 安装依赖
```
### 日常开发
```bash
make dev # 启动开发服务器
make lint # 代码检查
make format # 代码格式化
```
### 部署前检查
```bash
make deploy-prep # 完整检查和构建
```
## 已知问题和解决方案
### 水合错误修复
- **问题**: React hydration mismatch 错误
- **解决方案**: ThemeProvider 使用 `mounted` 状态防止 SSR/客户端不匹配
### Pre-commit Hooks
- 自动运行 ESLint、TypeScript 检查和 Prettier 格式化
- 配置位于根目录 `lint-staged.config.js`
## 注意事项
- 使用 bun 而非 npm/yarn 进行包管理
- 所有组件使用 TypeScript 严格模式
- 遵循 Next.js App Router 模式
- 使用 Tailwind CSS 进行样式管理
- 配置了自动代码格式化和类型检查