メインコンテンツへスキップ
ほとんどの CRM は設定パネルを提供します。 Twenty はプラットフォームを提供します。 アプリは、開発者が UI で提供される範囲を超えて Twenty を拡張する方法です。データモデル、サーバーサイドロジック、UI コンポーネント、AI 機能をコードとして定義し、それらを 1 つ以上のワークスペースにデプロイできます。

アプリが存在する理由

ワークフローはノーコードの自動化を担います。 しかし、コードが必要なものもあります。たとえば、カスタムの料金算出エンジン、独自のエンリッチメントパイプライン、レコードの更新ごとに実行されるコンプライアンスチェック、社内ツールからデータを取得するカスタム UI パネルなどです。 アプリを使えば、これらを一級の拡張機能として構築できます。外部から API と通信する壊れやすいスクリプトではなく、型システム、権限モデル、UI へ完全にアクセスできる、プラットフォーム上で実行されるコードとして実現できます。

アプリで定義できるもの

アプリは、twenty-sdk を使って エンティティ を宣言する TypeScript パッケージです。
エンティティ機能
オブジェクトとフィールド既存オブジェクト上の新しいデータテーブルとフィールド — 組み込みのものと同様に扱われます
ロジック関数HTTP ルート、cron スケジュール、またはデータベースイベントによってトリガーされるサーバーサイドの TypeScript
フロントコンポーネントサンドボックス化された React コンポーネントで、Twenty の UI(サイドパネル、ウィジェット、コマンドメニュー)内でレンダリングされます
スキルとエージェントAI 機能 — 再利用可能な指示と自律型アシスタント
ビューとナビゲーション事前設定済みのリストビューとサイドバーのメニュー項目
すべてはビルド時に AST 解析によって検出されます — 設定ファイルも登録用のボイラープレートも不要です。 任意の .ts ファイルに export default defineObject(...) を記述するだけで、SDK がそれを検出します。

実行方式

  • ロジック関数は、ホストからサンドボックス化された分離された Node.js プロセスで実行されます。 それらは、アプリのロール権限の範囲にスコープされた型付き API クライアントを通じてデータにアクセスします。
  • フロントコンポーネントは Remote DOM を用いた Web Workers 内で実行されます—メインページからサンドボックス化されつつ、ネイティブの DOM 要素(iframe ではありません)をレンダリングします。
  • 権限は API レベルで強制されます。 アプリは自分のロールで許可されたものだけを参照できます。

開発者エクスペリエンス

ローカル環境で TypeScript プロジェクトとしてアプリを作成します。 CLI がソースファイルを監視し、実行中の Twenty サーバーとライブ同期します — ファイルを編集すると、1 秒以内に UI に変更が反映されます。 スキーマが変更されると、型付き API クライアントは自動的に再生成されます。 準備ができたら、yarn twenty app:publish --private で本番サーバーにプッシュするか、yarn twenty app:publish でアプリを npm と Twenty マーケットプレイスに掲載します。

最初のアプリを構築する

3 フェーズのウォークスルー — 雛形の作成、ローカルサーバーの実行、変更内容の同期。