Перейти к основному содержанию
Приложения сейчас проходят альфа-тестирование. Функциональность работает, но продолжает развиваться.
Приложения позволяют расширять Twenty с помощью пользовательских объектов, полей, логических функций, навыков ИИ и UI-компонентов — всё это управляется как код. Что вы можете делать уже сегодня:
  • Определяйте пользовательские объекты и поля в виде кода (управляемая модель данных)
  • Создавайте логические функции с пользовательскими триггерами (HTTP-маршруты, cron, события базы данных)
  • Определяйте навыки для ИИ-агентов
  • Создавайте фронтенд-компоненты, которые отображаются внутри интерфейса Twenty
  • Развёртывайте одно и то же приложение в нескольких рабочих пространствах

Требования

Начало работы

Создайте новое приложение с помощью официального генератора, затем выполните аутентификацию и начните разработку:
# Scaffold a new app (includes all examples by default)
npx create-twenty-app@latest my-twenty-app
cd my-twenty-app

# Start dev mode: automatically syncs local changes to your workspace
yarn twenty app:dev
Генератор каркаса поддерживает два режима для управления тем, какие файлы-примеры включаются:
# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill)
npx create-twenty-app@latest my-app

# Minimal: only core files (application-config.ts and default-role.ts)
npx create-twenty-app@latest my-app --minimal
Отсюда вы можете:
# Add a new entity to your application (guided)
yarn twenty entity:add

# Watch your application's function logs
yarn twenty function:logs

# Execute a function by name
yarn twenty function:execute -n my-function -p '{"name": "test"}'

# Execute the pre-install function
yarn twenty function:execute --preInstall

# Execute the post-install function
yarn twenty function:execute --postInstall

# Uninstall the application from the current workspace
yarn twenty app:uninstall

# Display commands' help
yarn twenty help
Смотрите также: страницы справки CLI для create-twenty-app и twenty-sdk CLI.

Структура проекта (сгенерированного)

Когда вы запускаете npx create-twenty-app@latest my-twenty-app, генератор:
  • Копирует минимальное базовое приложение в my-twenty-app/
  • Добавляет локальную зависимость twenty-sdk и конфигурацию Yarn 4
  • Создаёт файлы конфигурации и скрипты, подключённые к CLI twenty
  • Генерирует основные файлы (конфигурацию приложения, роль функций по умолчанию, предустановочную и послеустановочную функции), а также примерные файлы в зависимости от выбранного режима создания каркаса
Сгенерированное с помощью каркаса приложение с режимом по умолчанию --exhaustive выглядит так:
my-twenty-app/
  package.json
  yarn.lock
  .gitignore
  .nvmrc
  .yarnrc.yml
  .yarn/
    install-state.gz
  .oxlintrc.json
  tsconfig.json
  README.md
  public/                           # Public assets folder (images, fonts, etc.)
  src/
  ├── application-config.ts           # Required - main application configuration
  ├── roles/
  │   └── default-role.ts               # Default role for logic functions
  ├── objects/
  │   └── example-object.ts             # Example custom object definition
  ├── fields/
  │   └── example-field.ts              # Example standalone field definition
  ├── logic-functions/
  │   ├── hello-world.ts                # Example logic function
  │   ├── pre-install.ts                # Pre-install logic function
  │   └── post-install.ts               # Post-install logic function
  ├── front-components/
  │   └── hello-world.tsx               # Example front component
  ├── views/
  │   └── example-view.ts                # Example saved view definition
  ├── navigation-menu-items/
  │   └── example-navigation-menu-item.ts # Example sidebar navigation link
  └── skills/
      └── example-skill.ts                # Example AI agent skill definition
С --minimal создаются только основные файлы (application-config.ts, roles/default-role.ts, logic-functions/pre-install.ts и logic-functions/post-install.ts). В общих чертах:
  • package.json: Объявляет имя приложения, версию, движки (Node 24+, Yarn 4) и добавляет twenty-sdk, а также скрипт twenty, который делегирует выполнение локальному CLI twenty. Выполните yarn twenty help, чтобы вывести список всех доступных команд.
  • .gitignore: Игнорирует распространённые артефакты, такие как node_modules, .yarn, generated/ (типизированный клиент), dist/, build/, каталоги coverage, файлы журналов и файлы .env*.
  • yarn.lock, .yarnrc.yml, .yarn/: Фиксируют и настраивают используемый в проекте инструментарий Yarn 4.
  • .nvmrc: Фиксирует версию Node.js, ожидаемую проектом.
  • .oxlintrc.json и tsconfig.json: Обеспечивают линтинг и конфигурацию TypeScript для исходников вашего приложения на TypeScript.
  • README.md: Короткий README в корне приложения с базовыми инструкциями.
  • public/: Папка для хранения общедоступных ресурсов (изображений, шрифтов, статических файлов), которые будут отдаваться вашим приложением. Файлы, размещённые здесь, загружаются во время синхронизации и доступны во время выполнения.
  • src/: Основное место, где вы определяете приложение как код

Обнаружение сущностей

SDK обнаруживает сущности, разбирая ваши файлы TypeScript в поисках вызовов export default define<Entity>({...}). Для каждого типа сущности существует соответствующая вспомогательная функция, экспортируемая из twenty-sdk:
Вспомогательная функцияТип сущности
defineObjectОпределения пользовательских объектов
defineLogicFunctionОпределения логических функций
definePreInstallLogicFunctionПредустановочная логическая функция (запускается до установки)
definePostInstallLogicFunctionПослеустановочная логическая функция (запускается после установки)
defineFrontComponentОпределения компонентов фронтенда
defineRoleОпределения ролей
defineFieldРасширения полей для существующих объектов
defineViewОпределения сохранённых представлений
defineNavigationMenuItemОпределения пунктов меню навигации
defineSkillОпределения навыков агента ИИ
Имена файлов заданы гибко. Обнаружение сущностей основано на AST — SDK сканирует ваши исходные файлы в поисках шаблона export default define<Entity>({...}). Вы можете организовывать файлы и папки как угодно. Группировка по типу сущности (например, logic-functions/, roles/) — это лишь соглашение для организации кода, а не требование.
Пример обнаруженной сущности:
// This file can be named anything and placed anywhere in src/
import { defineObject, FieldType } from 'twenty-sdk';

export default defineObject({
  universalIdentifier: '...',
  nameSingular: 'postCard',
  // ... rest of config
});
Позднее команды добавят больше файлов и папок:
  • yarn twenty app:dev автоматически сгенерирует два типизированных клиента API в node_modules/twenty-sdk/generated: CoreApiClient (для данных рабочего пространства через /graphql) и MetadataApiClient (для конфигурации рабочего пространства и загрузки файлов через /metadata).
  • yarn twenty entity:add добавит файлы определений сущностей в src/ для ваших пользовательских объектов, функций, фронтенд-компонентов, ролей, навыков и многого другого.

Аутентификация

При первом запуске yarn twenty auth:login вам будет предложено указать:
  • URL API (по умолчанию http://localhost:3000 или текущий профиль рабочего пространства)
  • Ключ API
Ваши учётные данные хранятся для каждого пользователя в ~/.twenty/config.json. Вы можете хранить несколько профилей и переключаться между ними.

Управление рабочими пространствами

# Login interactively (recommended)
yarn twenty auth:login

# Login to a specific workspace profile
yarn twenty auth:login --workspace my-custom-workspace

# List all configured workspaces
yarn twenty auth:list

# Switch the default workspace (interactive)
yarn twenty auth:switch

# Switch to a specific workspace
yarn twenty auth:switch production

# Check current authentication status
yarn twenty auth:status
После переключения рабочего пространства с помощью yarn twenty auth:switch все последующие команды по умолчанию будут использовать это рабочее пространство. Вы по-прежнему можете временно переопределить это с помощью --workspace <name>.

Ручная настройка (без генератора)

Хотя мы рекомендуем использовать create-twenty-app для наилучшего старта, вы также можете настроить проект вручную. Не устанавливайте CLI глобально. Вместо этого добавьте twenty-sdk как локальную зависимость и настройте один скрипт в вашем package.json:
yarn add -D twenty-sdk
Затем добавьте скрипт twenty:
{
  "scripts": {
    "twenty": "twenty"
  }
}
Теперь вы можете запускать все команды через yarn twenty <command>, например, yarn twenty app:dev, yarn twenty help и т. д.

Устранение неполадок

  • Ошибки аутентификации: выполните yarn twenty auth:login и убедитесь, что у вашего ключа API есть необходимые права.
  • Не удаётся подключиться к серверу: проверьте URL API и доступность сервера Twenty.
  • Типы или клиент отсутствуют/устарели: перезапустите yarn twenty app:dev — он автоматически генерирует типизированный клиент.
  • Режим разработки не синхронизируется: убедитесь, что запущен yarn twenty app:dev, и что ваша среда не игнорирует изменения.
Канал помощи в Discord: https://discord.com/channels/1130383047699738754/1130386664812982322