- Определяйте пользовательские объекты и поля в виде кода (управляемая модель данных)
- Создавайте логические функции с пользовательскими триггерами (HTTP-маршруты, cron, события базы данных)
- Определяйте навыки для ИИ-агентов
- Создавайте фронтенд-компоненты, которые отображаются внутри интерфейса Twenty
- Развёртывайте одно и то же приложение в нескольких рабочих пространствах
Требования
- Node.js 24+ и Yarn 4
- Рабочее пространство Twenty и ключ API (создайте его на https://app.twenty.com/settings/api-webhooks)
Начало работы
Создайте новое приложение с помощью официального генератора, затем выполните аутентификацию и начните разработку:Структура проекта (сгенерированного)
Когда вы запускаетеnpx create-twenty-app@latest my-twenty-app, генератор:
- Копирует минимальное базовое приложение в
my-twenty-app/ - Добавляет локальную зависимость
twenty-sdkи конфигурацию Yarn 4 - Создаёт файлы конфигурации и скрипты, подключённые к CLI
twenty - Генерирует основные файлы (конфигурацию приложения, роль функций по умолчанию, предустановочную и послеустановочную функции), а также примерные файлы в зависимости от выбранного режима создания каркаса
--exhaustive выглядит так:
--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, который делегирует выполнение локальному CLItwenty. Выполните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/) — это лишь соглашение для организации кода, а не требование.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. Вы можете хранить несколько профилей и переключаться между ними.
Управление рабочими пространствами
yarn twenty auth:switch все последующие команды по умолчанию будут использовать это рабочее пространство. Вы по-прежнему можете временно переопределить это с помощью --workspace <name>.
Ручная настройка (без генератора)
Хотя мы рекомендуем использоватьcreate-twenty-app для наилучшего старта, вы также можете настроить проект вручную. Не устанавливайте CLI глобально. Вместо этого добавьте twenty-sdk как локальную зависимость и настройте один скрипт в вашем package.json:
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, и что ваша среда не игнорирует изменения.