twentyhq/twenty

Twenty

用现代 CRM 学习元数据驱动对象、权限和工作流

难度
较难
适合
进阶
主要语言
TypeScript
GitHub
54.6k
许可证
AGPL-3.0
快照日期
2026年8月9日

先判断要不要学

这个项目值得拆什么?

Twenty 是面向 AI 时代的开源 CRM,把联系人、公司、机会、自定义对象与工作流放在 TypeScript/Nx monorepo 中。NestJS、PostgreSQL、Redis/BullMQ 支撑服务端,React、Jotai、Linaria 与 Lingui 支撑前端。它适合研究“可配置业务对象”如何贯穿 schema、API、表格和权限。

  1. 01

    不只有固定 CRM 表,可学元数据驱动的可扩展对象系统。

  2. 02

    前后端技术栈在 README 中明确列出,便于按层阅读。

  3. 03

    处理多租户、背景任务、国际化和大量表格交互,产品工程参考价值高。

可以学什么

不只是看代码,而是找到产品的骨架

  • 学产品结构
  • 学数据库
  • 学用户登录
  • 学界面
  • 学 Agent 工作流
  • 学完整项目组织
01

元数据驱动对象

选一个自定义字段,跟踪它从 metadata 到数据库、API、表格和编辑器的表达。

packages/twenty-server/src/engine · packages/twenty-front/src/modules
02

前台请求与背景任务分工

区分即时 CRM 操作与 BullMQ 后台处理,理解可重试任务边界。

packages/twenty-server/src · packages/twenty-server/src/engine/core-modules
03

表格型产品交互

观察列配置、选择、批量操作、过滤和视图如何共享对象契约。

packages/twenty-front/src/modules/object-record · packages/twenty-front/src/modules/views

三段学习路径

从理解、修改到做出你的版本

0130 分钟先跑通

建立 CRM 对象地图

  1. 读 README Stack
  2. 选 company/person/opportunity 之一
  3. 在 front/server 中各定位一次

完成标志:一张对象从 metadata 到 UI 的图。

022 小时动手改

设计一个自定义字段切片

  1. 定义字段类型与校验
  2. 对照 API 输入输出
  3. 找到表格和编辑器组件
  4. 列出迁移、索引和权限影响

完成标志:一份跨层改动清单。

031 天做变体

实现简化可配置 CRM 原型

  1. 仅支持两种对象和三种字段
  2. 实现元数据驱动表格
  3. 加入租户边界和背景导入任务
  4. 测试迁移、批量操作和跨租户访问

完成标志:一个能解释 metadata 价值与成本的小型 CRM。

评分解释

每一分都要说清楚为什么

可复刻性11 / 25
11 / 25

大型引擎与多服务不利整体复刻。

文档与代码清晰度16 / 20
16 / 20

技术栈清晰,但代码面积大。

新手学习价值10 / 20
10 / 20

适合进阶工程学习。

产品完整度15 / 15
15 / 15

CRM 与工作流能力成熟。

vibe coding 代表性6 / 10
6 / 10

适合学小步改成熟仓库。

活跃度5 / 5
5 / 5

活跃发布和社区。

新颖性5 / 5
5 / 5

元数据驱动 CRM 有高学习价值。