> ## Documentation Index
> Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 앱

> 코드로 Twenty를 확장하세요 — 커스텀 오브젝트, 서버 측 로직, UI 컴포넌트, AI 에이전트를 모두 TypeScript 패키지 형태로 제공합니다.

대부분의 CRM은 설정 패널을 제공합니다. Twenty는 플랫폼을 제공합니다. 앱은 개발자가 UI가 제공하는 것 이상으로 Twenty를 확장하는 방법입니다. 데이터 모델, 서버 측 로직, UI 컴포넌트, AI 기능을 코드로 정의하고, 이를 하나 이상의 워크스페이스에 배포합니다.

## 앱이 존재하는 이유

워크플로우는 노코드 자동화를 다룹니다. 하지만 어떤 것들은 코드가 필요합니다. 예를 들어, 커스텀 가격 책정 엔진, 독점 보강 파이프라인, 모든 레코드 업데이트 시 실행되는 규정 준수 검사, 내부 도구에서 데이터를 가져오는 커스텀 UI 패널 등이 있습니다.

앱을 통해 이러한 것들을 일급 확장 기능으로 구축할 수 있습니다. 플랫폼 외부에서 API에만 의존하는 불안정한 스크립트가 아니라, 타입 시스템, 권한 모델, UI에 완전하게 접근할 수 있는 플랫폼 위에서 실행되는 코드로 만들 수 있습니다.

## 앱이 정의할 수 있는 것

앱은 `twenty-sdk`를 사용해 **엔티티**를 선언하는 TypeScript 패키지입니다.

| 엔티티           | 하는 일                                                       |
| ------------- | ---------------------------------------------------------- |
| **객체 & 필드**   | 새 데이터 테이블과 기존 객체의 필드 — 기본 제공 항목과 동일하게 처리됩니다.               |
| **로직 함수**     | HTTP 라우트, cron 스케줄 또는 데이터베이스 이벤트로 트리거되는 서버 측 TypeScript 코드 |
| **프런트 컴포넌트**  | Twenty의 UI(사이드 패널, 위젯, 명령 메뉴) 안에 샌드박싱된 React 컴포넌트가 렌더링됩니다. |
| **스킬 & 에이전트** | AI 기능 — 재사용 가능한 지침과 자율형 어시스턴트                              |
| **뷰 & 내비게이션** | 사전 구성된 목록 뷰와 사이드바 메뉴 항목                                    |

모든 것은 빌드 시점에 AST 분석을 통해 감지되며, 설정 파일이나 등록용 상용구 코드는 필요 없습니다. 어떤 `.ts` 파일에든 `export default defineObject(...)`를 추가하면 SDK가 이를 인식합니다.

## 실행 방식

* **로직 함수**는 호스트와 분리된 격리된 Node.js 프로세스에서 실행됩니다. 이들은 앱의 역할 권한 범위로 제한된 타입이 지정된 API 클라이언트를 통해 데이터에 접근합니다.
* **프런트 컴포넌트**는 Remote DOM을 사용하는 Web Worker에서 실행됩니다 — 메인 페이지와는 샌드박스로 격리되어 있지만 네이티브 DOM 요소를 렌더링합니다(iframe이 아님).
* **권한**은 API 수준에서 강제 적용됩니다. 앱은 자신의 역할이 허용하는 것만 볼 수 있습니다.

## 개발자 경험

여러분은 로컬 머신에서 TypeScript 프로젝트로 앱을 작성합니다. CLI가 소스 파일을 감시하며 실행 중인 Twenty 서버와 실시간으로 동기화합니다. 파일을 수정하면 1초 안에 UI에서 변경 사항을 확인할 수 있습니다. 스키마가 변경되면 타입이 지정된 API 클라이언트가 자동으로 재생성됩니다. 준비가 되면 `yarn twenty app:publish --private`로 프로덕션 서버에 배포하거나, `yarn twenty app:publish`로 앱을 npm과 Twenty 마켓플레이스에 게시할 수 있습니다.

<Card title="첫 번째 앱 빌드하기" icon="arrow-right" href="/l/ko/developers/extend/apps/getting-started">
  3단계 워크스루 — 스캐폴딩, 로컬 서버 실행, 변경 사항 동기화.
</Card>
