--- title: Обзор description: Настройте само приложение — его идентичность, разрешения по умолчанию и то, что выполняется во время установки. icon: screwdriver-wrench --- **Конфигурационный слой** приложения Twenty описывает приложение *для платформы* — его идентичность, разрешения, которыми оно обладает, и код, который выполняется при установке или обновлении. Эти декларации не добавляют новых структур данных или поведения во время выполнения; они сообщают Twenty, *что это за приложение* и *как его настроить*. ```text ┌────────────────────────────────────────────────────────┐ │ Application — identity, default role, variables, │ │ marketplace metadata │ │ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Role — what the app's logic functions can read │ │ │ │ and write (referenced by Application) │ │ │ └──────────────────────────────────────────────────┘ │ └────────────────────────────────────────────────────────┘ │ ▼ (at install / upgrade time) ┌──────────────────────────────────┐ │ Pre-install hook │ before metadata migration └──────────────────────────────────┘ ┌──────────────────────────────────┐ │ Post-install hook │ after metadata migration └──────────────────────────────────┘ ``` ## В этом разделе `defineApplication` — идентичность, роль по умолчанию, переменные, метаданные маркетплейса. `defineRole` — определите, что логические функции вашего приложения могут читать и записывать. `definePreInstallLogicFunction` и `definePostInstallLogicFunction` — создавайте резервные копии данных, заполняйте значения по умолчанию, проверяйте обновления. ## Связь между частями * **Приложение** — это точка входа. У каждого приложения есть ровно один вызов `defineApplication()`, и он указывает на одну **роль** по умолчанию. * **Роль** управляет тем, что логические функции и фронтенд‑компоненты приложения могут читать и записывать. Следуйте принципу наименьших привилегий: выдавайте только те разрешения, которые вашему коду действительно нужны. * **Установочные хуки** запускаются при установке или обновлении — предустановочный до миграции метаданных (чтобы можно было отклонить рискованное обновление), постустановочный после миграции (чтобы можно было заполнить данные по умолчанию в соответствии с новой схемой). Установочные хуки используют то же окружение выполнения, что и [логическая функция](/l/ru/developers/extend/apps/logic/logic-functions) — тот же формат обработчика, те же переменные окружения, тот же типизированный клиент API, — но объявляются через собственные функции `define` и находятся вне обычной модели триггеров (HTTP, cron, события базы данных).