Architecture Design v1.0

FigBridge
Design to Code

从 Figma 设计稿到 Vue / React 组件的全自动桥梁。 插件提取 → 服务器存储 → Skill 生成,设计即代码。

Figma 插件提取
服务器存储
生成 Skill 地址
AI 生成组件

四层架构设计

点击任意模块查看详细设计、接口规范与代码示例。

Figma Plugin
客户端插件层
在设计稿中选中节点,一键提取布局、样式、层级结构并推送到服务器
Figma API UI Traverse
API Server
核心服务层
接收设计数据,解析结构,持久化存储,生成 Skill 端点地址
REST WebSocket Auth
Data Layer
数据持久层
设计快照、节点树、样式映射、生成记录的结构化存储
PostgreSQL Redis S3
Skill Bridge
AI 桥接层
MCP/Skill 协议适配,将设计数据转为 AI 可消费的上下文
MCP Skill Context
Code Generator
代码生成层
AI 根据设计上下文生成 Vue/React 组件,支持多框架输出
Vue3 React Tailwind
AI Engine
智能推理层
Claude / GPT 接入,设计意图理解,组件拆分与代码推理
Claude GPT Prompt

核心数据模型

六个关键实体承载从设计提取到代码生成的完整数据流。

DesignSnapshot
设计快照 — 一次提取的完整记录
  • string id
  • string figmaFileKey
  • string skillUrl
  • json rootNode
  • datetime createdAt
DesignNode
设计节点 — Figma 节点树的映射
  • string nodeId
  • string type (FRAME/TEXT/...)
  • json styles
  • json layout
  • string[] children
StyleMap
样式映射 — 设计 Token 到代码的桥梁
  • string tokenName
  • json figmaStyle
  • json cssMapping
  • json tailwindMapping
SkillEndpoint
Skill 端点 — AI 工具访问的入口
  • string skillId
  • string endpointUrl
  • string snapshotId
  • enum framework
  • json generateConfig
GenerationRecord
生成记录 — 每次代码产出的追溯
  • string id
  • string skillId
  • json output
  • enum status
  • datetime timestamp
ComponentLibrary
组件库 — 可复用的生成组件集
  • string componentId
  • string name
  • json vueCode
  • json reactCode
  • string[] tags

接口设计

RESTful 接口覆盖设计推送、Skill 管理、代码生成全链路。

Method Path Description
POST /api/v1/snapshots 从插件推送设计快照数据
GET /api/v1/snapshots/:id 获取指定快照的完整节点树与样式
POST /api/v1/skills 为快照创建 Skill 端点,返回可访问 URL
GET /api/v1/skills/:id/context Skill 上下文接口 — AI 工具拉取设计数据
POST /api/v1/skills/:id/generate 触发代码生成(指定框架与配置)
GET /api/v1/generations/:id 查询生成结果与组件代码
PUT /api/v1/snapshots/:id/nodes/:nodeId 更新指定节点的样式或结构覆盖
DELETE /api/v1/skills/:id 销毁 Skill 端点及关联缓存

完整工作流时序

从设计师在 Figma 中选中节点,到开发者拿到可用的 Vue/React 组件代码。

STEP 01
设计师选中节点,触发插件
在 Figma 中运行 FigBridge 插件,选中需要转换的设计区域(Frame/Component/Group),点击「提取设计」。
// 插件入口 - code.ts figma.currentPage.selection[0]; // 遍历节点树 function traverseNode(node): DesignNode { return { nodeId: node.id, type: node.type, name: node.name, styles: extractStyles(node), layout: extractLayout(node), children: node.children?.map(traverseNode) } }
STEP 02
插件将结构化数据 POST 到服务器
节点树经过精简和格式化后,通过 Figma UI 的 fetch API 发送到 FigBridge Server。只保留布局和样式关键信息,剔除冗余元数据,减少 80% 数据量。
// 发送到服务器 - ui.html const response = await fetch('https://figbridge.server/api/v1/snapshots', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ figmaFileKey: fileKey, rootNode: traversedTree, meta: { pageName, selectedFrames } }) }); // 响应包含 skillUrl const { skillUrl } = await response.json();
STEP 03
服务器存储并生成 Skill 端点
服务器接收数据后:① 持久化到 PostgreSQL ② 缓存热点数据到 Redis ③ 将原始图片资源存到 S3 ④ 生成唯一 Skill ID 和可访问 URL,返回给插件。
// 服务器处理 - snapshot.service.ts async function createSnapshot(dto: CreateSnapshotDto) { // 1. 存储节点树 const snapshot = await prisma.snapshot.create({ data: { figmaFileKey, rootNode, meta } }); // 2. 自动创建 Skill 端点 const skill = await prisma.skillEndpoint.create({ data: { snapshotId: snapshot.id, endpointUrl: `/api/v1/skills/${generateId()}/context`, framework: 'vue3' } }); return { skillUrl: skill.endpointUrl }; }
STEP 04
Claude Code 通过 Skill 拉取设计上下文
开发者在 Claude Code 中配置 FigBridge Skill 地址。AI 自动请求 Skill 端点,获取精简后的设计数据(布局结构 + 样式映射 + 组件语义),作为代码生成的上下文。
// Skill 上下文接口 - skill.controller.ts @Get(':id/context') async getContext(@Param('id') skillId: string) { const skill = await getSkillWithSnapshot(skillId); // 精简上下文:只返回 AI 需要的信息 return { framework: skill.framework, componentTree: simplifyForAI(skill.snapshot.rootNode), styleTokens: extractTokens(skill.snapshot.rootNode), layoutHints: inferLayout(skill.snapshot.rootNode) }; }
STEP 05
AI 生成 Vue / React 组件代码
Claude Code 基于设计上下文,自动推理组件拆分策略、样式实现方式(Tailwind / CSS Modules),生成可直接使用的组件代码。支持增量更新 — 设计变更后重新推送即可刷新 Skill 上下文。
// AI 生成的 Vue3 组件示例 <template> <div class="flex flex-col gap-4 p-6 rounded-2xl bg-white shadow-lg"> <h2 class="text-xl font-bold text-gray-900"> {{ title }} </h2> <p class="text-sm text-gray-500">{{ desc }}</p> </div> </template> <script setup lang="ts"> defineProps<{ title: string; desc: string }>() </script>

推荐技术栈

基于成熟开源生态,确保可维护性与扩展性。

Figma Plugin API React (Plugin UI) NestJS PostgreSQL Redis S3 (Assets) MCP Protocol Vue 3 Output React Output Tailwind CSS Claude API JWT Auth Docker Prisma ORM