- Changed all instances of the old project website URL to the new domain opentu.ai in documentation, metadata, and configuration files. - Updated the homepage link in package.json and various HTML files to reflect the new branding. - Adjusted sitemap and robots.txt to point to the new domain for better SEO and accessibility.
427 lines
11 KiB
Plaintext
427 lines
11 KiB
Plaintext
<div align="center">
|
|
<h1>
|
|
爱图 (Aitu)
|
|
</h1>
|
|
<h3>
|
|
AI图片视频创作(SaaS) + 一体化白板
|
|
</h3>
|
|
<p>
|
|
思维导图 · 流程图 · 自由画 · AI生图 · AI生视频
|
|
</p>
|
|
</div>
|
|
|
|
<div align="center">
|
|
<figure>
|
|
<a target="_blank" rel="noopener">
|
|
<img src="https://github.com/ljquan/aitu/blob/develop/apps/web/public/product_showcase/aitu-01.png" alt="AI 图片生成" width="100%" />
|
|
</a>
|
|
<figcaption>
|
|
<p align="center">
|
|
AI 图片生成 - 强大的 AI 创作能力
|
|
</p>
|
|
</figcaption>
|
|
</figure>
|
|
</div>
|
|
|
|
<div align="center">
|
|
<figure>
|
|
<a target="_blank" rel="noopener">
|
|
<img src="https://github.com/ljquan/aitu/blob/develop/apps/web/public/product_showcase/aitu-02.png" alt="AI 视频生成" width="100%" />
|
|
</a>
|
|
<figcaption>
|
|
<p align="center">
|
|
AI 视频生成 - 从静态到动态的创作飞跃
|
|
</p>
|
|
</figcaption>
|
|
</figure>
|
|
</div>
|
|
|
|
<div align="center">
|
|
<figure>
|
|
<a target="_blank" rel="noopener">
|
|
<img src="https://github.com/ljquan/aitu/blob/develop/apps/web/public/product_showcase/aitu-03.png" alt="思维导图" width="100%" />
|
|
</a>
|
|
<figcaption>
|
|
<p align="center">
|
|
思维导图 - 可视化思维整理
|
|
</p>
|
|
</figcaption>
|
|
</figure>
|
|
</div>
|
|
|
|
<div align="center">
|
|
<figure>
|
|
<a target="_blank" rel="noopener">
|
|
<img src="https://github.com/ljquan/aitu/blob/develop/apps/web/public/product_showcase/aitu-04.png" alt="流程图与自由画" width="100%" />
|
|
</a>
|
|
<figcaption>
|
|
<p align="center">
|
|
All in one 白板 - 流程图、自由画、图片等多种创作方式
|
|
</p>
|
|
</figcaption>
|
|
</figure>
|
|
</div>
|
|
|
|
[*English README*](https://github.com/ljquan/aitu/blob/develop/README_en.md)
|
|
|
|
## 特性
|
|
|
|
- 💯 免费 + 开源
|
|
- ⚒️ 思维导图、流程图
|
|
- 🖌 画笔
|
|
- 😀 插入图片
|
|
- 🚀 基于插件机制
|
|
- 🖼️ 📃 导出为 PNG, JSON(`.drawnix`)
|
|
- 💾 自动保存(浏览器缓存)
|
|
- ⚡ 编辑特性:撤销、重做、复制、粘贴等
|
|
- 🌌 无限画布:缩放、滚动
|
|
- 🎨 主题模式
|
|
- 📱 移动设备适配
|
|
- 📈 支持 mermaid 语法转流程图
|
|
- ✨ 支持 markdown 文本转思维导图(新支持 🔥🔥🔥)
|
|
|
|
|
|
## 关于名称
|
|
|
|
***爱图(Aitu)*** ,源于对创作的热爱与图形表达的追求。
|
|
|
|
*爱* 代表着对创作的热情与专注,*图* 象征着视觉表达的无限可能。在这里,每一次创作都是对美好的追求,每一笔绘画都是想象力的延伸。
|
|
|
|
创意源于内心的热爱,而 ***爱图(Aitu)*** 致力于成为每个创作者的得力助手。
|
|
|
|
*爱创作,图未来。*
|
|
|
|
|
|
## 与 Plait 画图框架
|
|
|
|
*爱图(Aitu)* 的定位是一个开箱即用、开源、免费的工具产品,它的底层是 *Plait* 框架,*Plait* 是开源的画图框架,代表着在知识可视化产品上的重要技术积累。
|
|
|
|
|
|
爱图 采用插件架构,虽然技术架构相对复杂,但插件架构也有其优势,比如能够支持多种 UI 框架(*Angular、React*),能够集成不同富文本框架(当前仅支持 *Slate* 框架),在开发上可以很好的实现业务的分层,开发各种细粒度的可复用插件,可以扩展更多的画板的应用场景。
|
|
|
|
|
|
## 仓储结构
|
|
|
|
```
|
|
aitu/
|
|
├── apps/
|
|
│ ├── web # 爱图 Web 应用
|
|
│ │ └── index.html # HTML
|
|
├── dist/ # 构建产物
|
|
├── packages/
|
|
│ └── drawnix/ # 白板应用核心
|
|
│ └── react-board/ # 白板 React 视图层
|
|
│ └── react-text/ # 文本渲染模块
|
|
├── package.json
|
|
├── ...
|
|
└── README.md
|
|
└── README_en.md
|
|
|
|
```
|
|
|
|
## 应用
|
|
|
|
[*https://opentu.ai*](https://opentu.ai) 是 *爱图* 的在线应用。
|
|
|
|
近期会高频迭代应用功能,持续优化用户体验。
|
|
|
|
|
|
## 🚀 快速开始
|
|
|
|
### 在线体验
|
|
直接访问 [opentu.ai](https://opentu.ai) 立即开始使用,无需安装任何软件。
|
|
|
|
### 本地开发
|
|
|
|
#### 环境要求
|
|
- Node.js >= 16.0.0
|
|
- npm >= 8.0.0
|
|
|
|
#### 安装步骤
|
|
|
|
```bash
|
|
# 克隆仓库
|
|
git clone https://github.com/ljquan/aitu.git
|
|
cd aitu
|
|
|
|
# 安装依赖
|
|
npm install
|
|
|
|
# 启动开发服务器
|
|
npm start
|
|
```
|
|
|
|
启动成功后,访问 `http://localhost:4200` 即可看到应用。
|
|
|
|
#### 可用命令
|
|
|
|
```bash
|
|
# 开发
|
|
npm start # 启动开发服务器
|
|
npm test # 运行测试
|
|
npm run build # 构建所有包
|
|
npm run build:web # 仅构建 web 应用
|
|
|
|
# 版本管理
|
|
npm run version:patch # 版本号 +0.0.1
|
|
npm run version:minor # 版本号 +0.1.0
|
|
npm run version:major # 版本号 +1.0.0
|
|
|
|
# 发布
|
|
npm run release # 发布补丁版本
|
|
npm run release:minor # 发布小版本
|
|
npm run release:major # 发布大版本
|
|
```
|
|
|
|
### 📚 开发文档
|
|
|
|
详细的开发文档位于 [`docs/`](./docs/) 目录:
|
|
|
|
- **[版本控制](./docs/VERSION_CONTROL.md)** - 版本管理和发布流程
|
|
- **[部署指南](./docs/CFPAGE-DEPLOY.md)** - Cloudflare Pages 部署
|
|
- **[PWA 配置](./docs/PWA_ICONS.md)** - PWA 图标生成指南
|
|
|
|
### 🧪 测试
|
|
|
|
```bash
|
|
# 运行所有测试
|
|
npm test
|
|
|
|
# 运行特定项目测试
|
|
nx test drawnix
|
|
nx test react-board
|
|
```
|
|
|
|
|
|
## 📖 使用说明
|
|
|
|
### 基本功能
|
|
|
|
#### 创建内容
|
|
- **思维导图**: 点击工具栏中的思维导图图标,开始创建分支节点
|
|
- **流程图**: 选择流程图工具,拖拽创建形状和连接线
|
|
- **自由绘画**: 使用画笔工具进行手绘创作
|
|
- **文本编辑**: 双击任意位置添加文本
|
|
|
|
#### 导入导出
|
|
- **导出格式**: 支持 PNG、JPG、JSON(.drawnix) 格式
|
|
- **文本转换**:
|
|
- 支持 Markdown 文本转思维导图
|
|
- 支持 Mermaid 语法转流程图
|
|
|
|
#### 快捷操作
|
|
- `Ctrl/Cmd + Z`: 撤销
|
|
- `Ctrl/Cmd + Y`: 重做
|
|
- `Ctrl/Cmd + C`: 复制
|
|
- `Ctrl/Cmd + V`: 粘贴
|
|
- 鼠标滚轮: 缩放画布
|
|
- 拖拽: 移动画布
|
|
|
|
### 🔧 插件开发
|
|
|
|
爱图 基于插件架构,支持自定义扩展:
|
|
|
|
```typescript
|
|
import { withFreehand, withMind, withDraw } from '@aitu/core';
|
|
|
|
// 创建带有特定插件的编辑器实例
|
|
const editor = withFreehand(
|
|
withMind(
|
|
withDraw(createEditor())
|
|
)
|
|
);
|
|
```
|
|
|
|
### 🐳 Docker 部署
|
|
|
|
```bash
|
|
# 拉取镜像
|
|
docker pull ljquan/aitu:latest
|
|
|
|
# 运行容器
|
|
docker run -d -p 8080:80 ljquan/aitu:latest
|
|
```
|
|
|
|
访问 `http://localhost:8080` 即可使用。
|
|
|
|
## 🏗️ 技术架构
|
|
|
|
### 技术栈
|
|
- **前端框架**: React 18.3+ with TypeScript
|
|
- **构建工具**: Vite + Nx (Monorepo)
|
|
- **UI 组件库**: TDesign React
|
|
- **绘图引擎**: Plait Framework
|
|
- **富文本编辑**: Slate.js
|
|
- **状态管理**: React Context + Hooks
|
|
- **样式方案**: Sass + CSS Module
|
|
|
|
### 核心模块
|
|
|
|
```
|
|
packages/
|
|
├── drawnix/ # 核心白板应用
|
|
│ ├── src/
|
|
│ │ ├── components/ # React 组件
|
|
│ │ ├── plugins/ # 功能插件
|
|
│ │ ├── transforms/ # 数据转换
|
|
│ │ └── utils/ # 工具函数
|
|
├── react-board/ # Plait React 适配层
|
|
├── react-text/ # 文本渲染组件
|
|
```
|
|
|
|
### 插件系统
|
|
|
|
采用组合式插件架构,每个插件负责特定功能:
|
|
|
|
- **withFreehand**: 自由绘画功能
|
|
- **withMind**: 思维导图功能
|
|
- **withDraw**: 基础图形绘制
|
|
- **withHotkey**: 快捷键支持
|
|
- **withTextLink**: 文本链接功能
|
|
|
|
## 📦 依赖说明
|
|
|
|
### 核心依赖
|
|
- [plait](https://github.com/worktile/plait) - 开源画图框架,提供底层绘图能力
|
|
- [slate](https://github.com/ianstormtaylor/slate) - 富文本编辑器框架,处理文本编辑逻辑
|
|
- [floating-ui](https://github.com/floating-ui/floating-ui) - 浮层定位库,用于工具栏和弹窗定位
|
|
- [tdesign-react](https://tdesign.tencent.com/react) - 企业级 UI 组件库
|
|
- [localforage](https://github.com/localForage/localForage) - 浏览器存储方案,支持自动保存
|
|
|
|
### 开发依赖
|
|
- **Nx**: Monorepo 管理工具
|
|
- **Vite**: 现代构建工具,提供快速的开发体验
|
|
- **TypeScript**: 类型安全的 JavaScript 超集
|
|
- **ESLint + Prettier**: 代码质量和格式化工具
|
|
|
|
|
|
|
|
## 🤝 贡献指南
|
|
|
|
我们欢迎并感谢任何形式的贡献!
|
|
|
|
### 贡献方式
|
|
|
|
#### 🐛 报告问题
|
|
- 使用 [GitHub Issues](https://github.com/ljquan/aitu/issues) 报告 Bug
|
|
- 请提供详细的重现步骤和环境信息
|
|
- 附上截图或录屏会更有帮助
|
|
|
|
#### 💡 功能建议
|
|
- 在 Issues 中标记为 `enhancement`
|
|
- 描述使用场景和预期效果
|
|
- 讨论技术实现方案
|
|
|
|
#### 🔧 代码贡献
|
|
|
|
1. **Fork 项目**
|
|
```bash
|
|
git clone https://github.com/your-username/aitu.git
|
|
```
|
|
|
|
2. **创建功能分支**
|
|
```bash
|
|
git checkout -b feature/your-feature-name
|
|
```
|
|
|
|
3. **本地开发**
|
|
```bash
|
|
npm install
|
|
npm start
|
|
```
|
|
|
|
4. **代码规范**
|
|
- 遵循现有代码风格
|
|
- 运行 `nx lint` 检查代码质量
|
|
- 运行 `nx test` 确保测试通过
|
|
- 添加必要的测试用例
|
|
|
|
5. **提交更改**
|
|
```bash
|
|
git add .
|
|
git commit -m "feat: add your feature description"
|
|
```
|
|
|
|
6. **推送并创建 PR**
|
|
```bash
|
|
git push origin feature/your-feature-name
|
|
```
|
|
|
|
#### 📝 文档贡献
|
|
- 改进 README 文档
|
|
- 完善代码注释
|
|
- 编写使用教程
|
|
|
|
### 开发约定
|
|
|
|
- **提交信息格式**: 遵循 [Conventional Commits](https://conventionalcommits.org/)
|
|
- **分支命名**: `feature/功能名称`、`fix/问题描述`、`docs/文档更新`
|
|
- **代码风格**: 使用 ESLint + Prettier 保持一致性
|
|
|
|
## 🚨 问题排查
|
|
|
|
### 常见问题
|
|
|
|
#### 安装问题
|
|
```bash
|
|
# 清除缓存重新安装
|
|
npm cache clean --force
|
|
rm -rf node_modules package-lock.json
|
|
npm install
|
|
```
|
|
|
|
#### 开发服务器启动失败
|
|
```bash
|
|
# 检查端口占用
|
|
lsof -i :4200
|
|
|
|
# 指定其他端口
|
|
npm start -- --port 3000
|
|
```
|
|
|
|
#### 构建失败
|
|
```bash
|
|
# 检查 TypeScript 类型错误
|
|
nx typecheck drawnix
|
|
|
|
# 检查代码风格
|
|
nx lint drawnix
|
|
```
|
|
|
|
#### 性能问题
|
|
- 大型画板文件可能导致渲染缓慢
|
|
- 建议分割为多个小文件
|
|
- 关闭不必要的插件功能
|
|
|
|
### 获取帮助
|
|
- 📖 查看 [文档](./docs/)
|
|
- 💬 提交 [Issue](https://github.com/ljquan/aitu/issues)
|
|
- 🗣️ 参与 [Discussions](https://github.com/ljquan/aitu/discussions)
|
|
|
|
## 🗺️ 路线图
|
|
|
|
### 已完成 ✅
|
|
- ✅ 基础白板功能
|
|
- ✅ 思维导图和流程图
|
|
- ✅ 自由绘画和图片插入
|
|
- ✅ Markdown/Mermaid 转换
|
|
- ✅ 移动端适配
|
|
|
|
### 开发中 🚧
|
|
- 🚧 协作功能 (多人实时编辑)
|
|
- 🚧 更多导出格式 (PDF, SVG)
|
|
- 🚧 模板系统
|
|
- 🚧 插件市场
|
|
|
|
### 计划中 📅
|
|
- 📅 云端同步存储
|
|
- 📅 版本历史管理
|
|
- 📅 API 开放平台
|
|
- 📅 桌面客户端
|
|
|
|
发布计划请关注 [Releases](https://github.com/ljquan/aitu/releases) 页面。
|
|
|
|
|
|
## License
|
|
|
|
[MIT License](https://github.com/ljquan/aitu/blob/master/LICENSE) |