twenty
学习是劳动,是充满思想的劳动。——乌申斯基
Twenty:社区驱动的“现代 Salesforce 替代品”,一位把 CRM 做成开源作品的理想主义者
Twenty 走进来时,先把名片递给你:
Building a modern alternative to Salesforce, powered by the community.
它不是冷冰冰的销售系统,更像一位有脾气、有追求的“客户关系管家”:
不想再让 CRM 变成昂贵的牢笼,也不愿意让用户的数据被锁在黑箱里。它想做的是——用开源和社区把 CRM 这件事重新写一遍。
它还会抬起头,认真地补一句身份宣言:
The #1 Open-Source CRM
Why Twenty:它为什么非要“重做 CRM”?
Twenty 讲理由时不绕弯,三句话,像三根钉子钉在桌面上。
1)CRMs 太贵了,而且用户被困住了
传统 CRM 的套路太熟练:把客户数据锁住,然后涨价。
Twenty 不认这个理,它的态度是:不该这样。
2)体验需要一次真正的“重启”
Twenty 觉得老世界的 CRM 已经背了太多历史包袱。
它要一个 fresh start,去重新打磨一种更一致、更现代的体验——灵感甚至来自 Notion、Airtable、Linear 这些新一代工具的 UX 习惯。
3)开源与社区不是口号,是增长方式
它相信开源,更相信社区一起把它“养大”。
它已经在和数以百计的开发者共同建设;而它想象的未来是:当插件能力真正到位,一个围绕 Twenty 的生态会自己长出来。
Installation:让 Twenty 在你的机器上“醒过来”
Twenty 在 README 里很干脆:安装请看文档,两条路——自托管 or 本地开发。
- 🚀 Self-hosting: https://docs.twenty.com/developers/self-host/capabilities/docker-compose
- 🖥️ Local Setup: https://docs.twenty.com/developers/contribute/capabilities/local-setup
Twenty 像个很有职业素养的工程师:
“我给你方向,路径我都写在文档里,你照着走就行。”
What You Can Do With Twenty:它能帮你把 CRM 做成“你自己的样子”
Twenty 不喜欢“功能列表式的炫耀”,它更像在邀请你一起生活:
“你有什么需求,直接去提 Issue。先告诉我你想怎么用我。”
但它也会把自己已经练好的本事摆出来,让你放心把业务交给它:
- 个性化布局:过滤、排序、分组、看板(Kanban)和表格视图(Table Views)
- 自定义对象与字段(数据模型由你塑形)
- 权限与角色(用自定义角色管理权限)
- 工作流自动化(触发器 + 动作)
- 邮件、日历事件、文件,以及更多(它不想只做“名单管理器”)
个性化布局:过滤 / 排序 / 分组 / 看板 / 表格
Twenty 像一个桌面整理大师:
同一批数据,你可以让它变成看板,也可以让它变成表格;你可以按阶段走,也可以按负责人分组;你想怎么看,它就怎么摆。
自定义对象与字段:你的业务语言,它来学
很多 CRM 最让人难受的是:你必须用它的词汇描述你的世界。
Twenty 的态度更像:“你说你的,我来适配。”
对象、字段、数据模型,你可以自己定义,让 CRM 按你的业务结构生长。
自定义角色与权限:它是门卫,也是秩序
Twenty 会认真地给每个角色发钥匙:
谁能看、谁能改、谁能触发什么动作,它都能用角色与权限体系管得清清楚楚。
工作流:触发器与动作,让它自己跑起来
Twenty 不满足于“记录发生了什么”,它更想“推动接下来发生什么”。
你可以配置触发器(Triggers)和动作(Actions),让流程自动走,让事情自己动。
邮件、日历事件、文件……它想做的是“工作台”
当邮件、日历、文件、协作都能在同一个 CRM 里被理解、被连接,CRM 才会真正变成生产力工具,而不是一张静态的客户表。
Stack:Twenty 的骨骼、肌肉与神经
Twenty 的技术栈像一支训练有素的团队,各司其职,配合默契:
- TypeScript
- Nx
- NestJS(配 BullMQ、PostgreSQL、Redis)
- React(配 Jotai、Linaria、Lingui)
它像一个大型城市:
后端负责秩序与交通(NestJS + 队列 + 数据库 + 缓存),
前端负责街道与灯光(React + 状态管理 + 样式方案 + 国际化),
Nx 负责把整个城市的建设节奏统一起来。
用 Twenty 的“官方脚手架”快速起步:Create Twenty App
Twenty 不止想让你“用它”,它还想让你“在它之上建东西”。
它有一个官方脚手架 CLI:Create Twenty App
目标很明确:让你快速生成一个可以跑的项目,并配好 twenty-sdk。
它的自我介绍很像一句承诺:
The official scaffolding CLI for building apps on top of Twenty CRM.
Sets up a ready-to-run project with twenty-sdk.
Quick start(直接跑起来)
1 | npx create-twenty-app@latest my-twenty-app |
这三行命令就像敲门三次——
第一次:把项目骨架搭出来;
第二次:走进项目里;
第三次:让它跑起来。
脚手架会做这些事:
- 创建一个 TypeScript 项目,带 lint、测试,并预配置
twentyCLI - 可选:启动一个本地 Twenty server(Docker)
- 打开浏览器完成 OAuth 认证
常用参数:让它按你的方式长大
| Flag | Description |
|---|---|
--example <name> |
从示例初始化 |
--name <name> |
设置 app 名称(跳过交互) |
--display-name <displayName> |
设置展示名(跳过交互) |
--description <description> |
设置描述(跳过交互) |
--skip-local-instance |
跳过本地 server 设置提示 |
比如你想从更丰富的示例开始:
1 | npx create-twenty-app@latest my-twenty-app --example hello-world |
示例来自这里:
https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples
脚手架文档入口
完整文档在:
- https://docs.twenty.com/developers/extend/apps/getting-started
- Getting Started(项目结构、server 管理、CI)
- Building Apps(实体定义、API client、测试)
- Publishing(部署、npm publish、marketplace)
关于 CLI:twenty-cli 已经退场,twenty-sdk 接棒
Twenty 的仓库里也很坦诚地写了:
Deprecated: twenty-cli
Please install and use twenty-sdk instead.
如果你之前装过 twenty-cli,它会建议你这样迁移:
1 | npm uninstall twenty-cli |
它像个把交接文档写得很清楚的老同事:
“我退了,但你别慌,接班人已经站好了。”
Join the Community:Twenty 喜欢人多热闹,更喜欢你动手
Twenty 的社区邀请清单像一张“入场券”,你想用什么方式加入都行:
- Star 仓库
- Watch releases(watch -> custom -> releases)
- 关注 Twitter / LinkedIn
- 加入 Discord: https://discord.gg/cx5n4Jzs57
- 在 Crowdin 改进翻译: https://twenty.crowdin.com/twenty
- 贡献代码:https://github.com/twentyhq/twenty/contribute
它的语气像在说:
“我们不是在做一个产品,我们在一起养一个世界。”
Twenty 的结尾语气:它不是要替代谁,它是要打开门
Twenty 从不掩饰它想做的事:
做一个现代 Salesforce 替代品,但不是靠封闭和捆绑,而是靠社区、开源、体验与可扩展性。
它像一位把 CRM 从“昂贵的高墙”里拆出来的人,
把砖一块块摆在阳光下,然后说:
来,一起建。
