技术方案 » 历史记录 » 版本 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` |