Skip to main content

Требования

  • Node.js 24+Скачать здесь
  • Yarn 4 — поставляется вместе с Node.js через Corepack. Включите его, выполнив corepack enable
  • DockerСкачать здесь. Требуется для запуска локального экземпляра Twenty. Пропустите, если у вас уже запущен Twenty в другом месте.
Создание приложения Twenty включает три фазы. Генератор каркаса объединяет их в одну команду для идеального сценария (happy path), но каждая фаза — отдельная концепция: когда что-то идёт не так, понимание того, на какой фазе вы находитесь, подскажет, что исправить.
ФазаЧто вы делаетеИнструментРезультат
1. Создание каркасаСгенерировать исходный код приложенияnpx create-twenty-appПроект TypeScript на диске
2. Запустить серверЗапустить сервер Twenty для синхронизацииDocker + yarn twenty serverЗапущенный экземпляр Twenty
3. СинхронизацияСинхронизируйте код с сервером в реальном времениyarn twenty devВаши изменения появляются в интерфейсе

Фаза 1 — Сгенерируйте каркас проекта

Создайте новое приложение из шаблона:
npx create-twenty-app@latest my-twenty-app
Вам будет предложено ввести имя и описание — нажмите Enter, чтобы принять значения по умолчанию. Это создаст проект TypeScript в my-twenty-app/ с начальным файлом application-config.ts, ролью по умолчанию, рабочим процессом CI и интеграционным тестом. После этой фазы: у вас есть исходный код приложения на вашем компьютере. Он ещё не запущен — это фаза 2.

Фаза 2 — Запустите локальный сервер Twenty

Вашему приложению нужен сервер Twenty для синхронизации. Сервер — это полноценный экземпляр Twenty — UI, GraphQL API, PostgreSQL — работающий локально в Docker. Ваш локальный код загружает свои определения на этот сервер, благодаря чему они появляются в интерфейсе. Генератор каркаса предложит запустить его за вас:
Хотите настроить локальный экземпляр Twenty?
  • Да (рекомендуется) — скачивает Docker-образ twentycrm/twenty-app-dev и запускает его на порту 2020. Сначала убедитесь, что Docker запущен.
  • Нет — выберите это, если у вас уже есть сервер Twenty, к которому вы хотите подключиться. Позже вы можете подключить его с помощью yarn twenty remote add.
Запустить локальный экземпляр?
Когда сервер будет запущен, откроется браузер для входа. Используйте предварительно созданную демонстрационную учётную запись:
  • Электронная почта: tim@apple.dev
  • Пароль: tim@apple.dev
Экран входа в Twenty
На следующем экране нажмите Authorize — это даст CLI доступ к вашему рабочему пространству.
Экран авторизации Twenty CLI
В вашем терминале появится подтверждение, что всё настроено.
Каркас приложения успешно создан
После этой фазы: у вас запущен сервер Twenty на http://localhost:2020, а ваш CLI авторизован для синхронизации с ним.
Если Docker не установлен или не запущен, генератор каркаса подскажет правильную команду запуска для вашей ОС. Когда Docker будет запущен, вы можете продолжить с yarn twenty server start — заново генерировать каркас не нужно.

Фаза 3 — Синхронизируйте свои изменения

Это внутренний цикл, в котором вы проведёте большую часть времени.
cd my-twenty-app
yarn twenty dev
Эта команда отслеживает src/, пересобирает при каждом изменении и синхронизирует результат с сервером. Отредактируйте файл, сохраните — и через секунду сервер отразит изменения. В терминале появится панель текущего статуса. Для более подробного вывода (журналы сборки, запросы синхронизации, трассировки ошибок) добавьте --verbose.
Вывод терминала в режиме разработки
Откройте http://localhost:2020/settings/applications#developer. Вы должны увидеть своё приложение в разделе Your Apps.
Список Your Apps с приложением My twenty app
Нажмите My twenty app, чтобы открыть его регистрацию приложения — запись на уровне сервера, описывающую ваше приложение (имя, идентификатор, учётные данные OAuth, источник). Одну и ту же регистрацию можно установить в нескольких рабочих пространствах на одном сервере.
Сведения о регистрации приложения
Нажмите View installed app, чтобы посмотреть установку в рабочем пространстве. Вкладка About показывает версию и параметры управления.
Установленное приложение
После этой фазы: у вас есть интерактивный цикл разработки. Отредактируйте любой файл в src/, и он появится в интерфейсе.

Разовая синхронизация для CI и скриптов

Передайте --once, чтобы выполнить одну сборку и синхронизацию и завершить работу — тот же конвейер, без наблюдателя:
yarn twenty dev --once
КомандаПоведениеКогда использовать
yarn twenty devОтслеживает и повторно синхронизирует при каждом изменении. Продолжает работать, пока вы его не остановите.Интерактивная локальная разработка.
yarn twenty dev --onceОдна сборка и синхронизация, завершает работу с кодом 0 при успехе и 1 при ошибке.CI, хуки pre-commit, AI-агенты, скриптовые рабочие процессы.
Оба режима требуют сервер в режиме разработки и аутентифицированный удалённый сервер.
Режим разработки доступен только на экземплярах Twenty, запущенных в режиме разработки (NODE_ENV=development). Экземпляры в продакшене отклоняют запросы синхронизации из режима разработки — используйте yarn twenty deploy для развёртывания на производственные серверы. См. Публикация приложений.

Что вы можете создать

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

Структура проекта

my-twenty-app/
  package.json
  src/
    application-config.ts                   # Required — your app's entry point
    default-role.ts                         # Permissions for logic functions
    constants/
      universal-identifiers.ts              # Auto-generated UUIDs and metadata
    __tests__/
      setup-test.ts
      app-install.integration-test.ts
  .github/workflows/ci.yml                  # GitHub Actions
  public/                                   # Static assets
  vitest.config.ts                          # Test runner config
  tsconfig.json, tsconfig.spec.json
  .nvmrc, .yarnrc.yml, .oxlintrc.json
  README.md, LLMS.md
Файл / ПапкаНазначение
src/application-config.tsОбязательно. Основной файл конфигурации для вашего приложения.
src/default-role.tsРоль по умолчанию, контролирующая, к чему имеют доступ ваши логические функции.
src/constants/universal-identifiers.tsАвтоматически генерируемые UUID и метаданные (отображаемое имя, описание).
src/__tests__/Интеграционные тесты (настройка + пример теста).
public/Статические ресурсы (изображения, шрифты), обслуживаемые вместе с вашим приложением.

Начните с примера

Используйте --example, чтобы начать с более полного проекта (пользовательские объекты, поля, логические функции, фронтенд-компоненты):
npx create-twenty-app@latest my-twenty-app --example postcard
Примеры берутся из каталога twenty-apps/examples на GitHub. Вы также можете сгенерировать каркас отдельных сущностей в существующем проекте с помощью yarn twenty add — см. Создание приложений.

Управление локальным сервером

Используйте yarn twenty server для управления локальным контейнером Twenty:
КомандаЧто делает
yarn twenty server startЗапустить сервер (при необходимости скачивает образ)
yarn twenty server start --port 3030Запустить на пользовательском порту
yarn twenty server stopОстановить сервер (данные сохраняются)
yarn twenty server statusПоказать URL, версию и учётные данные для входа
yarn twenty server logsПотоковый вывод журналов сервера
yarn twenty server resetСтереть данные и начать заново
yarn twenty server upgradeСкачать последний образ twenty-app-dev
yarn twenty server upgrade 2.2.0Обновить до конкретной версии
Данные сохраняются между перезапусками в двух томах Docker (twenty-app-dev-data для PostgreSQL, twenty-app-dev-storage для файлов). Используйте reset, чтобы стереть всё.

Обновление образа сервера

yarn twenty server upgrade скачивает последний образ, сравнивает дайджесты и пересоздаёт контейнер только если действительно что-то изменилось. Ваши тома данных сохраняются — заменяется только контейнер. Если был скачан новый образ и контейнер работал, при обновлении автоматически запускается новый контейнер; затем выполните yarn twenty server start, чтобы дождаться его готовности.
yarn twenty server upgrade            # Latest
yarn twenty server upgrade 2.2.0      # Specific version
Проверьте запущенную версию с помощью yarn twenty server status (эта команда показывает APP_VERSION, встроенную в контейнер).

Запуск параллельного тестового экземпляра

Передайте --test любой команде server, чтобы управлять вторым, полностью изолированным экземпляром — это полезно для запуска интеграционных тестов или экспериментов, не затрагивая ваши основные данные разработки.
КомандаЧто делает
yarn twenty server start --testЗапустить тестовый экземпляр (по умолчанию — порт 2021)
yarn twenty server stop --testОстановить его
yarn twenty server status --testПоказать его статус
yarn twenty server logs --testТранслировать его журналы
yarn twenty server reset --testСтереть его данные
yarn twenty server upgrade --testОбновить его образ
Тестовый экземпляр запускается в собственном контейнере Docker (twenty-app-dev-test) с выделенными томами (twenty-app-dev-test-data, twenty-app-dev-test-storage) и собственной конфигурацией, поэтому он может работать параллельно с вашим основным экземпляром без конфликтов. Совместите --test с --port, чтобы переопределить значение по умолчанию (2021).

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

Пропустите генератор каркаса, если вы добавляете SDK в существующий проект:
yarn add twenty-sdk twenty-client-sdk
Добавьте скрипт в package.json:
{
  "scripts": {
    "twenty": "twenty"
  }
}
Теперь вы можете запускать yarn twenty dev, yarn twenty server start и остальные команды.
Не устанавливайте twenty-sdk глобально — фиксируйте версию в каждом проекте, чтобы каждое приложение использовало свою собственную версию.

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

  • Ошибки Docker — убедитесь, что Docker Desktop (или демон) запущен перед выполнением yarn twenty server start. Сообщение об ошибке укажет правильную команду запуска для вашей ОС.
  • Неподходящая версия Node — нужна 24+. Проверьте с помощью node -v.
  • Отсутствует Yarn 4 — выполните corepack enable.
  • Зависимости поврежденыrm -rf node_modules && yarn install.
Застряли? Попросите помощи на Discord-сервере Twenty.