今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

twentyhq/twenty

技術チームが複雑なビジネス要件に対応するカスタムCRMを構築・展開できるオープンソースプラットフォームです。

営業チームのパイプラインやカスタムオブジェクトをTypeScriptで宣言し、git commitのようにバージョン管理できる感覚は、実際にリポジトリを開いて試すと一番よく分かります。NestJSとReact、PostgreSQLの構成がそのまま動くので、多段階承認やワークフロー、AIエージェントといったロジックをSalesforceやHubSpotの画面設定に頼らず、コードで直接組み立てられます。テストやマイグレーション、開発コマンドまで揃っているため、自社インフラ上でCRMの機能を丸ごと所有したい開発チームなら、今日クローンしてすぐ手を動かしてみたくなるはずです。

01 / 概要
何をするものか一文で言うと
ひとことで技術チームが複雑なビジネス要件に対応するカスタムCRMを構築・展開できるオープンソースプラットフォームです。

Twentyはオープンソースの顧客管理ツールで、Salesforceの代替として作られたCRMです。ReactのフロントエンドとNestJS・GraphQL・PostgreSQLのバックエンドをNxモノレポで構成しています。今回の資料には、CRM本体を拡張するための「Twenty Apps」向けCLIパッケージcreate-twenty-appの実装も含まれています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

リポジトリ全体はYarn 4とNxで管理されるモノレポです。twenty-server(NestJS+GraphQL+PostgreSQL)がワークスペースやオブジェクトのデータ層を担い、twenty-frontがReactの画面を提供します。拡張機能はpackages/create-twenty-appのCLIで作ります。cli.tsはcommanderでディレクトリ名やサーバーURL、認証方式(oauthかapiKey)を検証し、CreateAppCommandにテンプレート一式(application-config.ts・front-components・page-layouts・navigation-menu-itemsなど)をコピーします。生成したアプリはtwenty-sdkのCLI(yarn twenty dev:add object など)でオブジェクトやロジック関数を追加できます。統合テストのglobal-setup.tsは、環境変数TWENTY_API_URLとTWENTY_API_KEYを検証し、稼働中のサーバーのhealthzを確認したうえでappDevOnceでアプリを同期し、appUninstallで後片付けします。加えて.cursor/rulesと.claude/settings.jsonは、AIアシスタントに対して監修方針(コミットの署名禁止・簡潔な文体など)や実装ルール(syncable entityの作り方など)を強制する仕組みになっています。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    まずyarn installを実行しますが、Node 24.5.0とYarn 4.13.0が必須のため、.nvmrcとcorepackでバージョンを揃える手間が発生します。

  2. STEP 02

    twenty-server側でnpx nx run twenty-server:database:init:prodとmigrate:prodを流し、PostgreSQLへの接続情報を用意してからサーバーを起動する必要があります。

  3. STEP 03

    npx create-twenty-appでディレクトリ名(小文字・数字・ハイフンのみ)とサーバーURL、認証方式を指定すると、application-config.tsやfront-components配下のテンプレート一式が生成されます。

  4. STEP 04

    生成したアプリのディレクトリでyarn twenty dev:add objectやdev:add frontComponentを叩くと、src/objects配下やsrc/front-components配下にファイルが追加されていく体験ができます。

  5. STEP 05

    統合テストを走らせようとしてもTWENTY_API_URLとTWENTY_API_KEYが未設定だと、global-setup.tsが「yarn twenty docker:startでサーバーを起動してください」という明示的なエラーで止まります。

  6. STEP 06

    package.jsonのresolutionsブロックには、undiciやsharpなど多数のCVE対応パッチが列挙されており、単純なyarn installでも依存関係の複雑さを実感します。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

実行して得られるのは、React製フロントエンドとNestJS+GraphQL+PostgreSQLのバックエンドで動く自前ホスティング型CRMです。それに加えてcreate-twenty-app CLIで、CRMのオブジェクト・フィールド・ロジック関数・画面コンポーネント・ロール・ビューなどを追加できる拡張アプリの雛形が手に入ります。CLI自体はテンプレートのコピーと設定生成が中心で、実際の動作にはtwenty-serverが稼働している必要があります。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

今回渡された代表ファイルはcreate-twenty-appサブパッケージとリポジトリ横断のツール設定に偏っており、twenty-front・twenty-server本体のソースは含まれていないため、CRM本体の挙動そのものはこの資料だけでは判断しきれません。

02

Node 24.5.0・Yarn 4.13.0・PostgreSQL・Dockerなど複数の前提環境が必要で、READMEに書かれた通りの手順を踏まないとサーバーが起動しません。

03

統合テストや拡張アプリのdev:addコマンドは、稼働中のTwentyサーバーとAPIキーが前提になっており、単体のnpm installだけでは完結しません。

04

package.jsonのresolutionsに大量のCVE対応パッチが積み重なっており、依存関係の管理コストが高いことがうかがえます。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

自前でホスティングできるOSSのCRMを探しているチーム、あるいはCRM上にカスタムオブジェクトや業務ロジックを組み込みたい開発者に向いています。Nxモノレポ・CIワークフロー・Cursor/Claude向けルール群まで整備されており、単なる個人プロジェクトではなく組織的に運用されているコードベースだと判断できます。この判断は、CLIの実装(cli.ts)やテスト設定(global-setup.ts)、package.jsonのバージョン管理方針など具体的なファイル内容に基づいており、実行せずとも構造面から信頼できる評価だと考えます。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する