65 lines
4.8 KiB
Plaintext
65 lines
4.8 KiB
Plaintext
---
|
||
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 |
|