앱 작동 방식
앱은twenty-sdk 패키지의 defineEntity() 함수를 사용해 선언된 엔티티의 모음입니다. SDK는 빌드 시점에 AST 분석을 통해 이러한 선언을 감지하고, 앱이 워크스페이스에 추가하는 내용을 완전하게 설명한 매니페스트를 생성합니다. 이 함수들은 빌드 시점에 구성을 검증하고 IDE 자동 완성과 타입 안정성을 제공합니다.
파일 구성은 사용자의 선택입니다. 엔티티 감지는 AST 기반이며 — 파일 위치와 관계없이 SDK가
export default defineEntity(...) 호출을 찾습니다. 위의 폴더 구조는 관례이며 필수 사항은 아닙니다.엔티티 유형
샌드박싱
- 로직 함수는 서버의 격리된 Node.js 프로세스에서 실행됩니다. 이들은 앱의 역할 권한 범위로 제한된 타입이 지정된 API 클라이언트를 통해서만 데이터에 접근합니다.
- 프런트 컴포넌트는 Remote DOM을 사용하는 Web Worker에서 실행됩니다 — 메인 페이지와는 샌드박스로 격리되어 있지만 네이티브 DOM 요소를 렌더링합니다(iframe이 아님). 이들은 메시지 전달 호스트 API를 통해 Twenty와 통신합니다.
- 권한은 API 수준에서 강제 적용됩니다. 런타임 토큰(
TWENTY_APP_ACCESS_TOKEN)은defineApplication()에 정의된 역할에서 파생됩니다.
앱 라이프사이클
yarn twenty dev— 소스 파일을 감시하고 연결된 Twenty 서버로 변경 사항을 실시간 동기화합니다. 스키마가 변경되면 타입이 지정된 API 클라이언트가 자동으로 재생성됩니다.yarn twenty dev:build— TypeScript를 컴파일하고, 로직 함수와 프런트 컴포넌트를 esbuild로 번들링하며, 매니페스트를 생성합니다.- 사전/사후 설치 및 제거 훅 — 설치 중이거나 제거 직전에 실행되는 선택적 함수입니다. 자세한 내용은 Install Hooks를 참조하세요.
다음 단계
설정
애플리케이션 식별, 기본 역할, 설치 및 제거 훅.
데이터
객체, 필드, 양방향 관계.
로직
로직 함수, 스킬, 에이전트, OAuth 연결.
레이아웃
뷰, 내비게이션, 페이지 레이아웃, 프런트 컴포넌트.
작업
CLI, 테스트, 리모트, CI, 앱 게시.