뷰와 내비게이션
뷰는 특정 객체에 대해 저장된 목록입니다. 내비게이션 메뉴 항목은 해당 뷰를 사이드바에 배치합니다.
프런트 컴포넌트
프런트 컴포넌트는 Twenty 안에 샌드박스된 React 컴포넌트입니다. 우리 컴포넌트는 선택된 레코드를 읽고,CoreApiClient를 통해 person 템플릿을 로드한 뒤, 이전 장에서 만든 라우트로 POST 요청을 보냅니다.
이를 여는 커맨드
availabilityType: 'RECORD_SELECTION'이 있는 커맨드 메뉴 항목은 Person 이 선택되었을 때 표시되며, 컴포넌트를 사이드 패널에서 엽니다.
전체 플로우 사용해 보기
People을 열고, 사람을 하나 선택한 뒤 ⌘K / Ctrl K를 누르세요. “Generate document”가 앱 태그와 함께 표시됩니다:


레코드 페이지에서 문서 미리 보기
프런트 컴포넌트는 커맨드 메뉴에만 쓰이는 것이 아닙니다. 레코드 페이지의 탭으로 마운트할 수도 있습니다. 문서 레코드에 Preview 탭을 추가하여 Markdown 본문을 정돈된 인쇄용 페이지로 렌더링해 봅시다. 컴포넌트는 실행 컨텍스트에서 현재 레코드 ID 를 읽어 문서를 로드하고 렌더링합니다. 프런트 컴포넌트는 허용된 HTML 태그 화이트리스트만 사용할 수 있는 샌드박스에서 실행됩니다. 원시 HTML 주입(dangerouslySetInnerHTML)과 \<style>은 차단되므로, 작은 Markdown 헬퍼를 통해 Markdown을 인라인 스타일이 적용된 React 엘리먼트로 렌더링합니다.
RECORD_PAGE 레이아웃은 객체의 레코드 뷰에 탭을 추가합니다. CANVAS 탭의 FRONT_COMPONENT 위젯이 해당 컴포넌트를 호스팅합니다:

리치 텍스트 에디터로 템플릿 편집하기
템플릿에는 별도의 커스텀 컴포넌트가 전혀 필요하지 않습니다.body가 RICH_TEXT 필드이기 때문에, Twenty는 이미 해당 필드에 사용할 수 있는 완전한 리치 텍스트 편집기를 제공합니다. 표준 Note 및 Task 객체에서 사용하는 것과 동일한 편집기입니다. 우리는 이 에디터를 템플릿 레코드 페이지에 노출하기만 하면 됩니다.
EDITOR 디스플레이 모드의 FIELD 위젯을 가진 탭을 추가하고, fieldMetadataId를 통해 body 필드를 가리키도록 설정하세요:
RICH_TEXT 필드는 편집기의 블록 JSON과 Markdown 프로젝션을 모두 저장합니다. 생성 파이프라인은 그 Markdown 프로젝션을 읽으므로, 플레이스홀더, PDF, 공유 가능한 웹 페이지가 모두 변경 없이 계속 동작합니다. 전체 코드는
template-record.page-layout.ts에서 확인하세요.
이제 편집자는 제대로 된 리치 텍스트 편집기에서 템플릿을 작성할 수 있습니다:

다음: AI 에이전트 →
도구를 호출하는 에이전트와 스킬을 추가하세요.