Twentyはオープンソースの顧客管理ツールで、Salesforceの代替として作られたCRMです。ReactのフロントエンドとNestJS・GraphQL・PostgreSQLのバックエンドをNxモノレポで構成しています。今回の資料には、CRM本体を拡張するための「Twenty Apps」向けCLIパッケージcreate-twenty-appの実装も含まれています。
リポジトリ全体は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の作り方など)を強制する仕組みになっています。
- STEP 01
まずyarn installを実行しますが、Node 24.5.0とYarn 4.13.0が必須のため、.nvmrcとcorepackでバージョンを揃える手間が発生します。
- STEP 02
twenty-server側でnpx nx run twenty-server:database:init:prodとmigrate:prodを流し、PostgreSQLへの接続情報を用意してからサーバーを起動する必要があります。
- STEP 03
npx create-twenty-appでディレクトリ名(小文字・数字・ハイフンのみ)とサーバーURL、認証方式を指定すると、application-config.tsやfront-components配下のテンプレート一式が生成されます。
- STEP 04
生成したアプリのディレクトリでyarn twenty dev:add objectやdev:add frontComponentを叩くと、src/objects配下やsrc/front-components配下にファイルが追加されていく体験ができます。
- STEP 05
統合テストを走らせようとしてもTWENTY_API_URLとTWENTY_API_KEYが未設定だと、global-setup.tsが「yarn twenty docker:startでサーバーを起動してください」という明示的なエラーで止まります。
- STEP 06
package.jsonのresolutionsブロックには、undiciやsharpなど多数のCVE対応パッチが列挙されており、単純なyarn installでも依存関係の複雑さを実感します。
実行して得られるのは、React製フロントエンドとNestJS+GraphQL+PostgreSQLのバックエンドで動く自前ホスティング型CRMです。それに加えてcreate-twenty-app CLIで、CRMのオブジェクト・フィールド・ロジック関数・画面コンポーネント・ロール・ビューなどを追加できる拡張アプリの雛形が手に入ります。CLI自体はテンプレートのコピーと設定生成が中心で、実際の動作にはtwenty-serverが稼働している必要があります。
今回渡された代表ファイルはcreate-twenty-appサブパッケージとリポジトリ横断のツール設定に偏っており、twenty-front・twenty-server本体のソースは含まれていないため、CRM本体の挙動そのものはこの資料だけでは判断しきれません。
Node 24.5.0・Yarn 4.13.0・PostgreSQL・Dockerなど複数の前提環境が必要で、READMEに書かれた通りの手順を踏まないとサーバーが起動しません。
統合テストや拡張アプリのdev:addコマンドは、稼働中のTwentyサーバーとAPIキーが前提になっており、単体のnpm installだけでは完結しません。
package.jsonのresolutionsに大量のCVE対応パッチが積み重なっており、依存関係の管理コストが高いことがうかがえます。
自前でホスティングできるOSSのCRMを探しているチーム、あるいはCRM上にカスタムオブジェクトや業務ロジックを組み込みたい開発者に向いています。Nxモノレポ・CIワークフロー・Cursor/Claude向けルール群まで整備されており、単なる個人プロジェクトではなく組織的に運用されているコードベースだと判断できます。この判断は、CLIの実装(cli.ts)やテスト設定(global-setup.ts)、package.jsonのバージョン管理方針など具体的なファイル内容に基づいており、実行せずとも構造面から信頼できる評価だと考えます。