项目

一般

简介

技术方案 » 历史记录 » 版本 1

郑毅洁, 2026-02-26 16:43

1 1 郑毅洁
# 技术方案
2
3
## 架构
4
5
前端 React SPA (Vite + React + TypeScript + Tailwind CSS) + 后端 Go REST API (Gin框架) + PostgreSQL,前端由 nginx 托管静态文件,后端提供 API 服务,通过 Docker Compose 编排所有服务
6
7
## 基础设施
8
9
| 类型 | 镜像 | 别名 |
10
|------|------|------|
11
| postgres | postgres:15-alpine | postgres |
12
13
## 子任务
14
15
### 1. 首页开发
16
17
开发 Kodev 官网首页,包含以下内容和UI要求:
18
19
**页面结构:**
20
1. 顶部导航栏(Logo + 导航链接:首页/功能/文档/关于 + 深色/浅色主题切换按钮),桌面端水平排列,移动端汉堡菜单
21
2. Hero 区域:大标题介绍 Kodev 产品定位,副标题简短描述核心价值,两个 CTA 按钮('立即体验' 主按钮 + '查看文档' 次按钮),背景使用渐变色或抽象几何图形装饰
22
3. 核心特性展示区:以 3~4 列卡片网格布局展示产品核心特性,每张卡片包含图标、标题和简短描述,移动端改为单列堆叠
23
4. 底部 Footer:版权信息、快速链接、社交媒体图标
24
25
**UI设计要求:**
26
- 主色调使用科技蓝(#2563EB),辅助色使用靛蓝(#4F46E5)
27
- 深色主题背景使用 #0F172A,浅色主题背景使用 #FFFFFF
28
- 所有交互元素需有 hover/focus 状态反馈
29
- 使用 Tailwind CSS 实现响应式布局,断点:sm(640px), md(768px), lg(1024px)
30
- 页面切换和元素出现使用平滑过渡动画
31
- 字体使用 Inter 或系统默认无衬线字体
32
33
**技术要求:**
34
- 使用 React Router 配置路由
35
- 实现深色/浅色主题切换(使用 React Context + Tailwind dark mode)
36
- 提取公共布局组件(Header、Footer)供所有页面复用
37
- 配置 SEO meta tags(使用 react-helmet-async)
38
- 首页数据从后端 API 获取(GET /api/v1/pages/home)
39
40
分支后缀: `homepage`
41
42
### 2. 功能页开发
43
44
开发功能详情展示页面,详细介绍 Kodev 产品的所有功能模块。
45
46
**页面结构:**
47
1. 页面顶部 Banner:标题'产品功能',简短引导文案
48
2. 功能分类导航:水平标签栏或侧边栏,支持按分类筛选功能
49
3. 功能列表区域:每个功能模块以左右交替布局展示(奇数行图左文右,偶数行文左图右),包含功能标题、详细描述、功能截图/示意图占位区域
50
4. 功能对比表格(可选):以表格形式对比不同版本/方案的功能差异
51
52
**UI设计要求:**
53
- 功能卡片使用圆角(rounded-xl)、轻微阴影(shadow-md),深色模式下使用边框(border-gray-700)替代阴影
54
- 截图区域使用 16:9 或 4:3 比例的占位容器,带圆角和阴影模拟浏览器窗口效果
55
- 功能图标使用 Heroicons 或 Lucide React 图标库
56
- 列表项进入视口时触发淡入上移动画(使用 Intersection Observer 或 framer-motion)
57
- 移动端所有内容改为单列纵向堆叠
58
59
**技术要求:**
60
- 功能列表数据从后端 API 获取(GET /api/v1/features)
61
- 支持按分类过滤(query param: ?category=xxx)
62
- 图片使用懒加载优化性能
63
- 页面 SEO meta tags 配置
64
65
分支后缀: `features-page`
66
67
### 3. 文档页开发
68
69
开发技术文档页面,支持 Markdown 内容渲染,提供良好的文档阅读体验。
70
71
**页面结构:**
72
1. 左侧边栏:文档目录树,支持多级嵌套展开/折叠,当前阅读文档高亮,移动端改为顶部下拉菜单或抽屉式侧边栏
73
2. 中间主内容区:渲染 Markdown 文档内容,支持标题、段落、代码块(带语法高亮)、表格、图片、链接、列表等
74
3. 右侧目录(桌面端):当前文档的 TOC(Table of Contents),滚动时自动高亮当前章节
75
76
**UI设计要求:**
77
- 文档页采用三栏布局(侧边栏240px + 主内容区自适应 + TOC 200px),移动端隐藏两侧栏
78
- 代码块使用等宽字体,深色背景(bg-gray-900),支持一键复制按钮
79
- 代码语法高亮使用 Prism.js 或 highlight.js,支持常见语言(JavaScript, TypeScript, Go, SQL, YAML, Bash)
80
- Markdown 渲染后的排版遵循良好的阅读体验:行高1.75,段落间距适当,标题层级清晰
81
- 搜索框(可选):支持文档内关键字搜索
82
83
**技术要求:**
84
- 使用 react-markdown + remark-gfm 渲染 Markdown
85
- 使用 rehype-highlight 或 react-syntax-highlighter 实现代码高亮
86
- 文档目录结构和内容从后端 API 获取(GET /api/v1/docs/tree, GET /api/v1/docs/:slug)
87
- 后端从数据库或文件系统读取 Markdown 文件
88
- 实现 URL 路由与文档 slug 映射(/docs/:slug)
89
- 页面 SEO meta tags 配置
90
91
分支后缀: `docs-page`
92
93
### 4. 关于页开发
94
95
开发团队介绍页面,展示 Kodev 团队成员和公司信息。
96
97
**页面结构:**
98
1. 页面顶部 Banner:标题'关于我们',公司使命/愿景描述
99
2. 公司介绍区域:一段介绍 Kodev 公司背景、发展历程的文字内容,可配合时间线组件展示里程碑
100
3. 团队成员展示区:卡片网格布局(桌面端3~4列,移动端1~2列),每张卡片包含头像(圆形裁剪)、姓名、职位、简短介绍
101
4. 联系信息区域:公司邮箱、社交媒体链接、办公地址(可选)
102
103
**UI设计要求:**
104
- 团队成员卡片使用圆角、hover 时轻微上浮效果(transform: translateY(-4px))和阴影增强
105
- 头像使用圆形裁剪(rounded-full),尺寸 96x96 或 128x128
106
- 时间线组件使用左侧竖线 + 圆点标记 + 右侧内容的经典布局
107
- 联系区域使用图标+文字的组合排列
108
- 整体风格保持与其他页面一致的设计语言
109
110
**技术要求:**
111
- 团队成员数据从后端 API 获取(GET /api/v1/team)
112
- 公司信息从后端 API 获取(GET /api/v1/about)
113
- 头像图片支持懒加载
114
- 页面 SEO meta tags 配置
115
116
分支后缀: `about-page`
117
118
### 5. 后端 API 开发
119
120
使用 Go + Gin 框架开发所有后端 REST API 接口,连接 PostgreSQL 数据库。
121
122
**API 接口列表:**
123
1. GET /api/v1/pages/home - 获取首页内容(Hero文案、核心特性列表)
124
2. GET /api/v1/features - 获取功能列表,支持 ?category= 查询参数过滤
125
3. GET /api/v1/features/:id - 获取单个功能详情
126
4. GET /api/v1/docs/tree - 获取文档目录树结构
127
5. GET /api/v1/docs/:slug - 获取单篇文档的 Markdown 内容
128
6. GET /api/v1/team - 获取团队成员列表
129
7. GET /api/v1/about - 获取公司介绍信息
130
8. GET /api/v1/sitemap - 生成 sitemap.xml 数据
131
132
**数据库设计:**
133
- pages 表:id, slug, title, content(JSONB), created_at, updated_at
134
- features 表:id, title, description, category, icon, image_url, sort_order, created_at
135
- docs 表:id, slug, title, content(TEXT/Markdown), parent_id(自引用实现目录树), sort_order, created_at, updated_at
136
- team_members 表:id, name, role, bio, avatar_url, sort_order, created_at
137
138
**技术要求:**
139
- 使用 GORM 作为 ORM 操作 PostgreSQL
140
- 数据库迁移使用 GORM AutoMigrate 或 golang-migrate
141
- 提供 seed 脚本填充初始示例数据
142
- API 响应统一使用 JSON 格式,包含 code/message/data 结构
143
- 配置 CORS 允许前端跨域访问
144
- 错误处理中间件统一处理异常
145
- 环境变量配置数据库连接信息(DATABASE_URL)
146
147
分支后缀: `backend-api`
148
149
### 6. 主题切换与SEO优化
150
151
实现全局深色/浅色主题切换功能,以及完整的 SEO 优化配置。
152
153
**主题切换功能:**
154
1. 使用 React Context 创建 ThemeProvider,管理 dark/light 主题状态
155
2. 主题偏好持久化到 localStorage,首次访问时跟随系统偏好(prefers-color-scheme)
156
3. Tailwind CSS dark mode 使用 class 策略,ThemeProvider 控制 html 元素的 dark 类名
157
4. 切换按钮使用太阳/月亮图标,带平滑过渡动画
158
5. 所有页面组件的颜色使用 Tailwind 的 dark: 变体适配
159
160
**SEO优化:**
161
1. 使用 react-helmet-async 为每个页面设置独立的 title、description、keywords meta tags
162
2. 配置 Open Graph 标签(og:title, og:description, og:image)用于社交媒体分享
163
3. 生成 sitemap.xml(从后端 /api/v1/sitemap 获取数据,构建为静态文件或动态路由)
164
4. 配置 robots.txt
165
5. 语义化 HTML 标签(header, nav, main, section, article, footer)
166
6. 图片添加 alt 属性
167
7. 页面标题使用合理的 h1~h6 层级结构
168
169
**UI设计要求:**
170
- 主题切换按钮放置在导航栏右侧,图标尺寸20x20
171
- 切换时全局颜色过渡时间 200ms
172
- 确保深色和浅色主题下所有文字与背景的对比度符合 WCAG AA 标准(至少4.5:1)
173
174
分支后缀: `theme-and-seo`