ToolJet 项目介绍
ToolJet 项目介绍
项目定位
ToolJet 是一个开源低代码框架,用于快速构建和部署内部工具。它通过拖拽式前端构建器 + 50+ 数据源集成,让非专业开发者也能在几分钟内创建功能完整的应用。
解决的核心问题:传统内部工具开发需要前后端全栈能力,ToolJet 将这一过程可视化——拖组件拼 UI、连数据源查写数据、用 JS/Python 写自定义逻辑。
核心能力
- 可视化应用构建器:45+ 内置响应式组件(表格、图表、表单、进度条等),拖拽式布局
- ToolJet Database:内置无代码数据库,基于 PostgREST 提供 RESTful API
- 多人实时协同编辑:基于 Y.js (CRDT) 的多开发者同时编辑应用
- 50+ 数据源集成:PostgreSQL、MongoDB、Elasticsearch、REST API、Stripe、Slack、Google Sheets 等
- 工作流引擎:可视化编排定时任务、Webhook 触发、Python/JavaScript 执行
- 多页应用支持:单应用内管理多个页面
- 版本控制与 Git 同步:应用版本管理 + Git 同步(类似分支/发布模型)
- 插件系统:通过 Marketplace 扩展数据源和组件
- 细粒度权限控制:CASL 驱动的角色和组级权限管理
- 多端自适应:桌面端和移动端布局自定义
技术栈
| 层级 | 技术 |
|---|---|
| 前端 | React 18 + Webpack 5 + Zustand + Immer + Y.js (协同) + CodeMirror (代码编辑器) + Radix UI + TailwindCSS |
| 后端 | NestJS 11 + TypeORM + PostgreSQL 13 + Redis + BullMQ (队列) + WebSocket (Y.js Gateway) |
| 数据库代理 | PostgREST (ToolJet Database 的 REST API 层) |
| 加密 | AES-256-GCM (Lockbox 模式,每表每列独立派生密钥) |
| 可观测性 | OpenTelemetry (Tracing + Metrics) + Sentry + Pino 日志 |
| 工作流执行 | BullMQ 队列 + Temporal (EE) |
| 语言 | TypeScript (前后端统一) |
| 运行时 | Node.js 22 |
架构概览
快速体验
# Docker 一键启动(Community Edition)docker run \ --name tooljet \ --restart unless-stopped \ -p 80:80 \ --platform linux/amd64 \ -v tooljet_data:/var/lib/postgresql/13/main \ tooljet/try:ee-lts-latest访问 http://localhost 即可进入应用构建器。
本地开发环境(需要 PostgreSQL + Redis):
git clone https://github.com/ToolJet/ToolJet.gitcd ToolJet# 配置 .env(参考 .env.example)docker compose up postgres redis postgrestnpm run db:setupnpm run dev # 启动 client + server教程导读
本教程分为 AI 应用 和 编程核心 两个部分:
AI 应用部分 (ai/)
从 ToolJet 的 AI 能力出发,学习通用的 AI 应用开发知识:
- LLM 多模型路由与故障转移 — ToolJet 如何集成 OpenAI、Anthropic、Google、Mistral 等多模型提供商
- AI 辅助代码生成实践 — ToolJet 的 AI 代码提示、代码修复和自然语言建表功能
编程核心部分 (dev/)
聚焦 ToolJet 的工程实践和架构决策:
- NestJS 模块化架构设计 — 65+ 模块的组织方式、CE/EE 双版架构
- 插件式数据源系统 — 50+ 数据源的插件化集成与沙箱执行
- Y.js 多人协同编辑 — 基于 CRDT 的实时多人协同架构
- BullMQ 后台任务队列 — 工作流调度、优先级、并发控制
- CASL 细粒度权限控制 — 能力驱动的安全模型
- 前端状态管理架构 — Zustand + Immer 的 30+ Slice 设计
- 安全加密与凭证管理 — Lockbox 模式的密钥派生
- ToolJet Database 架构 — PostgREST 代理与无代码数据库