--- title: Configuração da aplicação description: Declare a identidade do seu app, o papel padrão, as variáveis e os metadados de marketplace com `defineApplication`. icon: rocket --- Todo app deve ter exatamente uma chamada a `defineApplication`. Ela declara: * **Identidade** — identificador universal, nome de exibição, descrição. * **Permissões** — qual papel é usado pelas suas funções de lógica e pelos componentes de front-end. * **Variáveis** *(opcional)* — pares chave–valor expostos ao seu código como variáveis de ambiente. * **Hooks de pré-instalação/pós-instalação** *(opcional)* — consulte [Funções de lógica](/l/pt/developers/extend/apps/logic/logic-functions). ```ts src/application-config.ts import { defineApplication } from 'twenty-sdk/define'; export default defineApplication({ universalIdentifier: '39783023-bcac-41e3-b0d2-ff1944d8465d', displayName: 'My Twenty App', description: 'My first Twenty app', applicationVariables: { DEFAULT_RECIPIENT_NAME: { universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de', description: 'Default recipient name for postcards', value: 'Jane Doe', isSecret: false, }, }, }); ``` Notas: * Os campos `universalIdentifier` são IDs determinísticos que você controla. Gere-os uma vez e mantenha-os estáveis entre sincronizações. * `applicationVariables` tornam-se variáveis de ambiente para suas funções e componentes de front-end. Em funções lógicas (no lado do servidor), elas ficam disponíveis como `process.env.VARIABLE_NAME`. Em componentes de front-end, use `getApplicationVariable('VARIABLE_NAME')` de `twenty-sdk/front-component`. Variáveis marcadas com `isSecret: true` são injetadas apenas em funções lógicas. Componentes de front-end recebem apenas variáveis não secretas. * O papel padrão é detectado automaticamente a partir do arquivo de definição de papel marcado com [`defineApplicationRole()`](/l/pt/developers/extend/apps/config/roles) — você não precisa referenciá-lo em `defineApplication()`. * As funções de pré-instalação e pós-instalação são detectadas automaticamente durante a construção do manifesto — você não precisa referenciá-las em `defineApplication()`. * Passar `defaultRoleUniversalIdentifier` explicitamente ainda é compatível para retrocompatibilidade, mas foi preterido em favor de `defineApplicationRole()`. ## Papel de função padrão O papel declarado com [`defineApplicationRole()`](/l/pt/developers/extend/apps/config/roles) controla o que as funções de lógica e os componentes de front-end do aplicativo podem acessar: * O token em tempo de execução injetado como `TWENTY_APP_ACCESS_TOKEN` é derivado desse papel. * O cliente de API tipado é restrito às permissões concedidas a esse papel. * Siga o princípio do menor privilégio: declare apenas as permissões de que suas funções precisam. Ao criar um novo app com o scaffold, a CLI cria um arquivo de papel inicial em `src/roles/default-role.ts`. Consulte [Papéis e permissões](/l/pt/developers/extend/apps/config/roles) para a referência completa. ## Metadados do Marketplace Se você planeja [publicar seu app](/l/pt/developers/extend/apps/operations/publishing), estes campos opcionais controlam como seu app aparece no marketplace: | Campo | Descrição | | ------------------ | ----------------------------------------------------------------------------------------------------------------- | | `author` | Nome do autor ou da empresa | | `category` | Categoria do app para filtragem no marketplace | | `logoUrl` | Caminho para o logo do seu app (por exemplo, `public/logo.png`) | | `screenshots` | Array de caminhos de capturas de tela (por exemplo, `public/screenshot-1.png`) | | `aboutDescription` | Descrição em markdown mais longa para a aba "Sobre". Se omitido, o marketplace usa o `README.md` do pacote no npm | | `websiteUrl` | Link para seu site | | `termsUrl` | Link para os Termos de Serviço | | `emailSupport` | Endereço de e-mail de suporte | | `issueReportUrl` | Link para o rastreador de problemas |