Home
Softono
E-BOARD

E-BOARD

Open source TypeScript
12
Stars
0
Forks
0
Issues
1
Watchers
1 week
Last Commit

About E-BOARD

E-BOARD

Platforms

Web Self-hosted

Languages

TypeScript

E-Board

基于 Canvas 的插件化白板引擎,支持绘图、思维导图、多人协作等场景。

License: GPL v3 TypeScript

在线预览 →


特性

  • 插件化架构 — 绘图、选择、漫游、快捷键等功能均以插件形式注册,可按需组合
  • 丰富的元素类型 — 矩形、圆形、箭头、直线、图片、文本、思维导图
  • 高性能渲染 — 基于 Canvas 的脏矩形渲染、离屏缓存,流畅应对大量元素
  • 完整的交互能力 — 元素选中、拖拽、缩放、框选、撤销/重做
  • IoC 容器 — 基于 Inversify 的依赖注入,模块解耦、易于扩展
  • 协作支持 — WebSocket 通信层,为实时协同编辑预留接口
  • AI 辅助 — 内置 AI 助手模块,支持智能内容生成

架构

E-Board
├── packages/
│   ├── board-core          # 核心引擎:元素、插件、服务(渲染、变换、模型)
│   ├── board-utils         # 公共工具函数(几何计算、深拷贝等)
│   ├── board-ui            # UI 组件库
│   ├── board-workbench     # 工作台:组装核心与插件,提供完整白板实例
│   ├── board-collaboration # 协作层:CRDT / OT 相关逻辑
│   ├── board-websocket     # WebSocket 通信服务
│   ├── board-plugin-fps    # FPS 性能监测插件
│   └── board-ai-assistant  # AI 辅助模块
├── app/                    # 前端演示应用(Webpack + React)
└── server/                 # 后端服务

快速开始

环境要求

  • Node.js >= 16
  • pnpm >= 8

安装与运行

# 克隆项目
git clone https://github.com/egyoung/E-Board.git
cd E-Board

# 安装依赖
pnpm install

# 启动开发服务器
pnpm dev

访问 http://localhost:3001 查看效果。

构建

pnpm build

核心插件

插件 功能
draw 自由笔触绘制,支持线条粗细、颜色调节
drawShape 矩形、圆形等形状绘制
drawArrow / drawLine 箭头、直线绘制
selection 元素选中、拖拽、缩放、框选
roam 画布平移与缩放(漫游模式)
eraser 橡皮擦,支持局部擦除
mindMap 思维导图绘制与自动布局
picture 图片元素插入与管理
hotkey 快捷键绑定(撤销/重做/删除等)
clear 画布清空

元素类型

元素 说明
Rect 矩形,支持填充与描边
Circle 圆形 / 椭圆
Arrow 带箭头的连线
Line 直线段
Picture 图片元素
Text 文本元素
MindMap 思维导图(树形自动布局)

项目路线图

  • [x] 插件机制
  • [x] 基础绘图(笔触平滑、粗细、颜色)
  • [x] 形状绘制(矩形、圆形、箭头、直线)
  • [x] 图片渲染
  • [x] 橡皮擦 & 局部擦除
  • [x] 元素选中 / 拖拽 / 缩放
  • [x] 画布漫游与缩放
  • [x] 撤销 / 重做
  • [x] 思维导图
  • [ ] 文本渲染
  • [ ] 多指书写
  • [ ] 实时协同编辑
  • [ ] CI / CD 流水线完善

技术栈

  • 渲染:Canvas 2D
  • 语言:TypeScript
  • 依赖注入:Inversify
  • 前端框架:React
  • 构建工具:Webpack / Father
  • 包管理:pnpm Monorepo

许可证

GPL v3

本项目采用 GNU General Public License v3.0 发布:

  • 自由使用 — 允许个人和商业用途
  • 自由修改 — 可以修改源代码
  • 自由分发 — 可以分发副本
  • Copyleft — 衍生作品必须以相同的 GPL 许可证开源