assetplex 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Wynter-Cai
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.
package/README.md ADDED
@@ -0,0 +1,243 @@
1
+ <div align="center">
2
+
3
+ # AssetPlex
4
+
5
+ **One hub, every AI agent.**
6
+
7
+ Sync your **identity, skills, rules & MCP servers** across Claude Code, Codex, TRAE, WorkBuddy and Qoder — **100% local, no cloud**.
8
+
9
+ [中文文档](README.zh-CN.md) · [Docs](https://wynter-cai.github.io/assetplex/) · [Privacy](PRIVACY.md) · [Discussions](https://github.com/wynter-cai/assetplex/discussions)
10
+
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
12
+ [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org/)
13
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.6-blue)](https://www.typescriptlang.org/)
14
+ [![CI](https://github.com/wynter-cai/assetplex/actions/workflows/ci.yml/badge.svg)](https://github.com/wynter-cai/assetplex/actions/workflows/ci.yml)
15
+ [![Docs](https://github.com/wynter-cai/assetplex/actions/workflows/docs.yml/badge.svg)](https://github.com/wynter-cai/assetplex/actions/workflows/docs.yml)
16
+ [![npm version](https://img.shields.io/npm/v/assetplex)](https://www.npmjs.com/package/assetplex)
17
+ [![npm downloads](https://img.shields.io/npm/dm/assetplex)](https://www.npmjs.com/package/assetplex)
18
+ [![GitHub stars](https://img.shields.io/github/stars/wynter-cai/assetplex?style=social)](https://github.com/wynter-cai/assetplex/stargazers)
19
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/wynter-cai/assetplex/pulls)
20
+
21
+ </div>
22
+
23
+ ---
24
+
25
+ ## Why AssetPlex?
26
+
27
+ Your identity, skills, rules and MCP servers are **your assets**. AI coding tools are just consumers of them. Today, that means:
28
+
29
+ - You write a detailed profile in TRAE — Claude Code doesn't know you.
30
+ - You configure 5 MCP servers in Claude Code — Codex makes you redo it all.
31
+ - You write 10 skills — and copy-paste them into every tool by hand.
32
+ - Switching tools feels like moving house — every time.
33
+
34
+ **AssetPlex centralizes those assets once, in `~/.assetplex/`, and syncs them to every AI coding tool with a single command.**
35
+
36
+ ```
37
+ ┌──────────────────────────────┐
38
+ │ ~/.assetplex/ │
39
+ │ │
40
+ │ identity/ your profile │
41
+ │ skills/ skill library │
42
+ │ rules/ global rules │
43
+ │ mcp/ MCP servers │
44
+ │ preferences/ personal prefs │
45
+ │ │
46
+ └──────────┬───────────────────┘
47
+ │ assetplex sync
48
+ ┌───────────┼───────────┬──────────────┐
49
+ ▼ ▼ ▼ ▼
50
+ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐
51
+ │ TRAE CN │ │ Claude │ │ Codex │ │WorkBuddy │
52
+ └─────────┘ └─────────┘ └─────────┘ └──────────┘
53
+ ```
54
+
55
+ ## Key Features
56
+
57
+ - **One central hub** — manage identity, skills, rules & MCP servers in `~/.assetplex/`.
58
+ - **Sync everywhere** — `assetplex sync` pushes your assets to all enabled tools.
59
+ - **Reverse import** — pull existing configs from your installed tools back into the hub.
60
+ - **Visual Web UI** — `assetplex ui` gives you a dashboard for everything.
61
+ - **Format translation** — JSON↔TOML for Codex, `${VAR}` interpolation for WorkBuddy.
62
+ - **Cross-platform symlinks** — Windows (junction fallback), macOS and Linux.
63
+ - **Plugin-style adapters** — add a new tool without touching the core.
64
+ - **100% local & private** — nothing ever leaves your machine. [Read the privacy model](PRIVACY.md).
65
+
66
+ ## Supported Tools
67
+
68
+ | Tool | Syncs | Strategy |
69
+ |---|---|---|
70
+ | **TRAE (CN)** | profile, skills, rules, MCP | symlink |
71
+ | **Claude Code** | CLAUDE.md (`@import` aggregation), skills, MCP | native-import |
72
+ | **Codex CLI** | AGENTS.md, skills, MCP (JSON→TOML) | copy |
73
+ | **WorkBuddy / CodeBuddy** | skills, rules, MCP (`${VAR}` interpolation) | symlink + copy |
74
+ | **Qoder** | project `.qoder/rules`, skills, AGENTS.md | per-project |
75
+
76
+ ## Quick Start
77
+
78
+ ```bash
79
+ # Install
80
+ npm install -g assetplex
81
+
82
+ # Initialize your hub (~/.assetplex/)
83
+ assetplex init
84
+
85
+ # Detect installed AI tools
86
+ assetplex doctor
87
+
88
+ # Sync the hub to all tools
89
+ assetplex sync
90
+
91
+ # Open the visual management UI
92
+ assetplex ui
93
+ ```
94
+
95
+ **Requirements**: Node.js >= 18.
96
+
97
+ ### Reverse-import from existing tools
98
+
99
+ ```bash
100
+ assetplex ui
101
+ # → Import page: detects installed tools → scans importable content → pick → one-click merge
102
+ ```
103
+
104
+ ## Comparison
105
+
106
+ | Capability | agentsync | agentsmesh | sync-rules | **AssetPlex** |
107
+ |---|---|---|---|---|
108
+ | China tool stack (TRAE/WorkBuddy/Qoder) | ❌ | ❌ | ❌ | ✅ |
109
+ | Visual Web UI | ❌ | ❌ | ❌ | ✅ |
110
+ | Reverse import from tools | ❌ | ❌ | ❌ | ✅ |
111
+ | Claude `@import` native support | ❌ | ❌ | ✅ | ✅ |
112
+ | Windows symlink compatibility | ✅ | ✅ | ❌ | ✅ |
113
+ | Plugin architecture | ❌ | ✅ | ❌ | ✅ |
114
+ | MCP JSON↔TOML conversion | ❌ | ❌ | ❌ | ✅ |
115
+
116
+ ## Web UI Preview
117
+
118
+ Run `assetplex ui`, then open `http://127.0.0.1:17521`:
119
+
120
+ ```
121
+ ┌──────────────────────────────────────────────────────────┐
122
+ │ 🏠 AssetPlex v0.1.0 │
123
+ ├──────────┬───────────────────────────────────────────────┤
124
+ │ 📊 Overview │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
125
+ │ 🔧 Tools │ │Installed│ │Hub files│ │Last sync│ │
126
+ │ 🔄 Sync │ └─────────┘ └─────────┘ └─────────┘ │
127
+ │ 📥 Import │ │
128
+ │ 👤 Identity │ ┌─ Tool status ─────────────────────┐ │
129
+ │ 📦 Skills │ │ TRAE CN ✅ installed ~/.trae-cn/ │ │
130
+ │ 📋 Rules │ │ Claude Code ❌ not installed │ │
131
+ │ 🔌 MCP │ └───────────────────────────────────┘ │
132
+ │ ⚙️ Settings │ │
133
+ └──────────┴──────────────────────────────────────────────┘
134
+ ```
135
+
136
+ ## Hub Layout
137
+
138
+ ```
139
+ ~/.assetplex/
140
+ ├── identity/ # your profile
141
+ │ ├── profile.md
142
+ │ ├── communication-style.md
143
+ │ ├── tech-stack.md
144
+ │ └── env.md
145
+ ├── skills/ # cross-tool skill library
146
+ │ └── <skill-name>/SKILL.md
147
+ ├── rules/ # rules
148
+ │ ├── always/global.md
149
+ │ ├── by-glob/*.md
150
+ │ └── by-project/*.md
151
+ ├── preferences/ # personal preferences
152
+ ├── mcp/mcp.sources.json # MCP server configs
153
+ ├── commands/ # custom slash commands
154
+ ├── agents/ # sub-agent definitions
155
+ ├── hub.toml # main hub config
156
+ └── .backups/ # automatic backups
157
+ ```
158
+
159
+ ## Roadmap
160
+
161
+ **In development** 🚧
162
+ - Smart import wizard (4-step: detect → scan → resolve conflicts → import)
163
+ - Smart merge (Markdown / JSON / TOML conflict resolution)
164
+
165
+ **Planned** 📋
166
+ - Auto-learned profile from your coding behavior (`profile.auto.md`)
167
+ - Skill marketplace (aggregating claudeskills.info, agentskills.io)
168
+ - Drift detection & auto-repair
169
+ - `--watch` mode for live re-sync
170
+
171
+ ## Contributing
172
+
173
+ Contributions are welcome! See [open issues](https://github.com/wynter-cai/assetplex/issues) and [good first issues](https://github.com/wynter-cai/assetplex/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22), or join the [Discussions](https://github.com/wynter-cai/assetplex/discussions).
174
+
175
+ ## Development
176
+
177
+ ```bash
178
+ git clone https://github.com/wynter-cai/assetplex.git
179
+ cd assetplex
180
+
181
+ npm install # install backend dependencies
182
+ npm run dev # watch mode (tsup)
183
+ npm run typecheck # TypeScript check
184
+ npm test # backend tests (Vitest)
185
+ npm run build # build dist/
186
+
187
+ # Frontend (web/)
188
+ cd web
189
+ npm install
190
+ npm test # frontend tests
191
+ npm run build # tsc -b && vite build
192
+ ```
193
+
194
+ ### Project structure
195
+
196
+ ```
197
+ assetplex/
198
+ ├── src/
199
+ │ ├── cli/ # CLI commands (init/doctor/sync/ui)
200
+ │ ├── core/ # core engine
201
+ │ │ ├── adapters/ # tool adapters (base interface)
202
+ │ │ ├── sync-engine.ts
203
+ │ │ ├── config.ts
204
+ │ │ └── types.ts
205
+ │ ├── server/ # HTTP server for the Web UI
206
+ │ ├── transforms/ # format transforms (symlink/json-toml/env)
207
+ │ └── utils/ # fs/paths/logger
208
+ ├── web/ # React frontend (Vite + shadcn/ui)
209
+ ├── tests/ # backend tests
210
+ └── 设计文档/ # design docs
211
+ ```
212
+
213
+ ### Tech stack
214
+
215
+ | Layer | Tech |
216
+ |---|---|
217
+ | Language | TypeScript 5.6 |
218
+ | Runtime | Node.js 18+ |
219
+ | CLI | Commander.js |
220
+ | HTTP | Hono |
221
+ | Frontend | React 18 + Vite + shadcn/ui + Tailwind |
222
+ | Data fetching | TanStack Query |
223
+ | Build | tsup |
224
+ | Tests | Vitest |
225
+
226
+ ## Design Docs
227
+
228
+ - [Overall architecture](设计文档/assetplex-design-plan.md)
229
+ - [Sync engine MVP](设计文档/assetplex-stage2-sync-mvp.md)
230
+ - [Web UI plan](设计文档/assetplex-web-ui-plan.md)
231
+ - [Import wizard PRD](设计文档/assetplex-prd-v2-import-wizard.md)
232
+
233
+ ## License
234
+
235
+ MIT © [Wynter-Cai](https://github.com/wynter-cai)
236
+
237
+ ---
238
+
239
+ <div align="center">
240
+
241
+ If AssetPlex helps you, please give it a ⭐ Star!
242
+
243
+ </div>
@@ -0,0 +1,243 @@
1
+ <div align="center">
2
+
3
+ # AssetPlex
4
+
5
+ **一个身份,所有 AI 助手。**
6
+
7
+ 把你的**身份、技能、规则、MCP 服务器**在 Claude Code、Codex、TRAE、WorkBuddy、Qoder 之间一键同步 —— **数据 100% 本地,绝不上云**。
8
+
9
+ [English](README.md) · [Docs](https://wynter-cai.github.io/assetplex/) · [隐私模型](PRIVACY.md) · [Discussions](https://github.com/wynter-cai/assetplex/discussions)
10
+
11
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
12
+ [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org/)
13
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.6-blue)](https://www.typescriptlang.org/)
14
+ [![CI](https://github.com/wynter-cai/assetplex/actions/workflows/ci.yml/badge.svg)](https://github.com/wynter-cai/assetplex/actions/workflows/ci.yml)
15
+ [![Docs](https://github.com/wynter-cai/assetplex/actions/workflows/docs.yml/badge.svg)](https://github.com/wynter-cai/assetplex/actions/workflows/docs.yml)
16
+ [![npm version](https://img.shields.io/npm/v/assetplex)](https://www.npmjs.com/package/assetplex)
17
+ [![npm downloads](https://img.shields.io/npm/dm/assetplex)](https://www.npmjs.com/package/assetplex)
18
+ [![GitHub stars](https://img.shields.io/github/stars/wynter-cai/assetplex?style=social)](https://github.com/wynter-cai/assetplex/stargazers)
19
+ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/wynter-cai/assetplex/pulls)
20
+
21
+ </div>
22
+
23
+ ---
24
+
25
+ ## 为什么需要 AssetPlex?
26
+
27
+ 你的身份、技能、规则和 MCP 服务器是**你的资产**,AI 编码工具只是消费端。而现状是:
28
+
29
+ - 你在 TRAE 里写了详细的个人画像,Claude Code 不认识你
30
+ - 你在 Claude Code 配了 5 个 MCP 服务器,Codex 里又要重新配一遍
31
+ - 你写了 10 个技能,每个工具都要手动复制一份
32
+ - 换工具像搬家 —— 每次都从头开始
33
+
34
+ **AssetPlex 把这些资产集中管理在 `~/.assetplex/`,一条命令同步到你所有的 AI 编码工具。**
35
+
36
+ ```
37
+ ┌──────────────────────────────┐
38
+ │ ~/.assetplex/ │
39
+ │ │
40
+ │ identity/ 你的身份画像 │
41
+ │ skills/ 技能库 │
42
+ │ rules/ 通用规则 │
43
+ │ mcp/ MCP 配置 │
44
+ │ preferences/ 个人偏好 │
45
+ │ │
46
+ └──────────┬───────────────────┘
47
+ │ assetplex sync
48
+ ┌───────────┼───────────┬──────────────┐
49
+ ▼ ▼ ▼ ▼
50
+ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐
51
+ │ TRAE CN │ │ Claude │ │ Codex │ │WorkBuddy │
52
+ └─────────┘ └─────────┘ └─────────┘ └──────────┘
53
+ ```
54
+
55
+ ## 核心功能
56
+
57
+ - **一个中心 Hub** —— 身份、技能、规则、MCP 全部集中在 `~/.assetplex/`
58
+ - **一键同步** —— `assetplex sync` 把资产推到所有启用的工具
59
+ - **反向导入** —— 从已安装工具把现有配置拉回 Hub
60
+ - **可视化 Web UI** —— `assetplex ui` 仪表盘管理一切
61
+ - **格式转换** —— Codex 的 JSON↔TOML、WorkBuddy 的 `${VAR}` 插值
62
+ - **跨平台 symlink** —— Windows(junction 回退)、macOS、Linux
63
+ - **插件化适配器** —— 新增工具无需改核心代码
64
+ - **100% 本地、绝对隐私** —— 数据永不离开你的电脑。[查看隐私模型](PRIVACY.md)
65
+
66
+ ## 支持的 AI 工具
67
+
68
+ | 工具 | 同步内容 | 策略 |
69
+ |---|---|---|
70
+ | **TRAE 中国版** | 身份画像、技能、规则、MCP | symlink |
71
+ | **Claude Code** | CLAUDE.md(@import 聚合)、技能、MCP | native-import |
72
+ | **Codex CLI** | AGENTS.md、技能、MCP(JSON→TOML) | copy |
73
+ | **WorkBuddy / CodeBuddy** | 技能、规则、MCP(${VAR} 插值) | symlink + copy |
74
+ | **Qoder** | 项目级 .qoder/rules、skills、AGENTS.md | per-project |
75
+
76
+ ## 快速开始
77
+
78
+ ```bash
79
+ # 安装
80
+ npm install -g assetplex
81
+
82
+ # 初始化 Hub(~/.assetplex/)
83
+ assetplex init
84
+
85
+ # 检测已安装的 AI 工具
86
+ assetplex doctor
87
+
88
+ # 同步 Hub 到所有工具
89
+ assetplex sync
90
+
91
+ # 打开可视化界面
92
+ assetplex ui
93
+ ```
94
+
95
+ **要求**:Node.js >= 18
96
+
97
+ ### 从已有工具反向导入
98
+
99
+ ```bash
100
+ assetplex ui
101
+ # → 导入页:检测已装工具 → 扫描可导入内容 → 勾选 → 一键汇聚
102
+ ```
103
+
104
+ ## 与同类工具对比
105
+
106
+ | 能力 | agentsync | agentsmesh | sync-rules | **AssetPlex** |
107
+ |---|---|---|---|---|
108
+ | 中国工具栈(TRAE/WorkBuddy/Qoder) | ❌ | ❌ | ❌ | ✅ |
109
+ | Web UI 可视化管理 | ❌ | ❌ | ❌ | ✅ |
110
+ | 从工具反向导入 | ❌ | ❌ | ❌ | ✅ |
111
+ | Claude @import 原生利用 | ❌ | ❌ | ✅ | ✅ |
112
+ | Windows symlink 兼容 | ✅ | ✅ | ❌ | ✅ |
113
+ | 插件架构 | ❌ | ✅ | ❌ | ✅ |
114
+ | MCP JSON↔TOML 转换 | ❌ | ❌ | ❌ | ✅ |
115
+
116
+ ## Web UI 预览
117
+
118
+ 运行 `assetplex ui` 后,浏览器打开 `http://127.0.0.1:17521`:
119
+
120
+ ```
121
+ ┌──────────────────────────────────────────────────────────┐
122
+ │ 🏠 AssetPlex v0.1.0 │
123
+ ├──────────┬───────────────────────────────────────────────┤
124
+ │ 📊 总览 │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
125
+ │ 🔧 工具 │ │ 已安装 │ │ Hub 文件 │ │ 最近同步 │ │
126
+ │ 🔄 同步 │ └─────────┘ └─────────┘ └─────────┘ │
127
+ │ 📥 导入 │ │
128
+ │ 👤 身份 │ ┌─ 工具状态 ──────────────────────────┐ │
129
+ │ 📦 技能 │ │ TRAE CN ✅ 已安装 ~/.trae-cn/ │ │
130
+ │ 📋 规则 │ │ Claude Code ❌ 未安装 │ │
131
+ │ 🔌 MCP │ └──────────────────────────────────────┘ │
132
+ │ ⚙️ 设置 │ │
133
+ └──────────┴───────────────────────────────────────────────┘
134
+ ```
135
+
136
+ ## Hub 目录结构
137
+
138
+ ```
139
+ ~/.assetplex/
140
+ ├── identity/ # 你的身份画像
141
+ │ ├── profile.md
142
+ │ ├── communication-style.md
143
+ │ ├── tech-stack.md
144
+ │ └── env.md
145
+ ├── skills/ # 跨工具技能库
146
+ │ └── <skill-name>/SKILL.md
147
+ ├── rules/ # 规则
148
+ │ ├── always/global.md
149
+ │ ├── by-glob/*.md
150
+ │ └── by-project/*.md
151
+ ├── preferences/ # 个人偏好
152
+ ├── mcp/mcp.sources.json # MCP 服务器配置
153
+ ├── commands/ # 自定义 slash commands
154
+ ├── agents/ # 子代理定义
155
+ ├── hub.toml # Hub 主配置
156
+ └── .backups/ # 自动备份
157
+ ```
158
+
159
+ ## 路线图
160
+
161
+ **开发中** 🚧
162
+ - 智能导入向导(4 步:检测 → 扫描 → 解决冲突 → 导入)
163
+ - 智能合并(Markdown / JSON / TOML 冲突处理)
164
+
165
+ **规划中** 📋
166
+ - 从编码行为自动学习个人画像(`profile.auto.md`)
167
+ - 技能市场(聚合 claudeskills.info / agentskills.io)
168
+ - 漂移检测与自动修复
169
+ - `--watch` 文件变化自动同步
170
+
171
+ ## 参与贡献
172
+
173
+ 欢迎提交 PR!可以看看 [open issues](https://github.com/wynter-cai/assetplex/issues) 和 [good first issues](https://github.com/wynter-cai/assetplex/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22),或加入 [Discussions](https://github.com/wynter-cai/assetplex/discussions)。
174
+
175
+ ## 开发
176
+
177
+ ```bash
178
+ git clone https://github.com/wynter-cai/assetplex.git
179
+ cd assetplex
180
+
181
+ npm install # 安装后端依赖
182
+ npm run dev # watch 模式(tsup)
183
+ npm run typecheck # TypeScript 检查
184
+ npm test # 后端测试(Vitest)
185
+ npm run build # 构建 dist/
186
+
187
+ # 前端(web/)
188
+ cd web
189
+ npm install
190
+ npm test # 前端测试
191
+ npm run build # tsc -b && vite build
192
+ ```
193
+
194
+ ### 项目结构
195
+
196
+ ```
197
+ assetplex/
198
+ ├── src/
199
+ │ ├── cli/ # CLI 命令(init/doctor/sync/ui)
200
+ │ ├── core/ # 核心引擎
201
+ │ │ ├── adapters/ # 工具适配器(base 接口)
202
+ │ │ ├── sync-engine.ts
203
+ │ │ ├── config.ts
204
+ │ │ └── types.ts
205
+ │ ├── server/ # Web UI 后端 HTTP 服务
206
+ │ ├── transforms/ # 格式转换(symlink/json-toml/env)
207
+ │ └── utils/ # 工具函数(fs/paths/logger)
208
+ ├── web/ # React 前端(Vite + shadcn/ui)
209
+ ├── tests/ # 后端测试
210
+ └── 设计文档/ # 产品设计文档
211
+ ```
212
+
213
+ ### 技术栈
214
+
215
+ | 层 | 技术 |
216
+ |---|---|
217
+ | 语言 | TypeScript 5.6 |
218
+ | 运行时 | Node.js 18+ |
219
+ | CLI | Commander.js |
220
+ | HTTP | Hono |
221
+ | 前端 | React 18 + Vite + shadcn/ui + Tailwind |
222
+ | 数据获取 | TanStack Query |
223
+ | 构建 | tsup |
224
+ | 测试 | Vitest |
225
+
226
+ ## 设计文档
227
+
228
+ - [项目总体架构设计](设计文档/assetplex-design-plan.md)
229
+ - [同步引擎 MVP 方案](设计文档/assetplex-stage2-sync-mvp.md)
230
+ - [Web UI 实施方案](设计文档/assetplex-web-ui-plan.md)
231
+ - [产品 PRD v2.0](设计文档/assetplex-prd-v2-import-wizard.md)
232
+
233
+ ## 开源协议
234
+
235
+ MIT © [Wynter-Cai](https://github.com/wynter-cai)
236
+
237
+ ---
238
+
239
+ <div align="center">
240
+
241
+ 如果你觉得有用,请给个 ⭐ Star 支持一下~
242
+
243
+ </div>