Dự án được tổ chức thành các gói độc lập để tối ưu hóa việc tái sử dụng code và quản lý dependencies:
apps/builder: Ứng dụng chính cho người dùng, sử dụng UnoCSS.apps/canvas-preview: Ứng dụng con chạy trong IFrame, chỉ tích hợp Tailwind CSS để render UI Kit.packages/ui-kit: Thư viện linh kiện Nuxt nội bộ của công ty.packages/parser: Bộ máy phân tích file.vue/.mdđể trích xuất Props và Snippets.packages/shared: Chứa các kiểu dữ liệu (Types) chung cho Virtual Tree và Schema.
3. Giao Thức Kết Nối (The Bridge Protocol)
Vì Canvas nằm trong IFrame, hệ thống sử dụng window.postMessage để truyền tải dữ liệu:
SYNC_SCHEMA: Gửi toàn bộ cây linh kiện (Virtual Tree) sang Canvas để render.UPDATE_NODE: Cập nhật thuộc tính của một linh kiện cụ thể theo thời gian thực.SELECT_NODE: Canvas phản hồi ID linh kiện được click để Builder mở bảng thuộc tính.
4. Thuật Toán Mapping & Code Gen (The Brain)
Bộ máy Aggregator vận hành theo cơ chế duyệt cây đệ quy (Recursive Tree Traversal):
- Input: Virtual Tree JSON từ Store.
- Mapping: So khớp
node.namevới snippets trong Registry thu thập được từpackages/parser. - Transformation: Thay thế các placeholder trong snippet bằng giá trị
propsthực tế. - Output: Tổng hợp thành file Vue SFC hoàn chỉnh, đi qua Prettier Wasm để định dạng code chuẩn.
5. Danh Sách Công Nghệ (Tech Stack)
| Thành phần | Công nghệ | Phiên bản | Ghi chú |
|---|---|---|---|
| Core Framework | Nuxt 4 | Latest | Sử dụng Nuxt Layers cho UI Kit |
| State Management | Pinia | Latest | Lưu trữ Virtual Tree |
| Builder CSS | UnoCSS | Latest | Tốc độ cao, không xung đột |
| UI Kit CSS | Tailwind CSS | Latest | Theo chuẩn công ty |
| D&D Library | Vue.Draggable-next | Latest | Dựa trên SortableJS |
| Parser | @vue/compiler-sfc | Latest | Trích xuất template/script chuẩn |
