---
title: Configurația aplicației
description: Declarați identitatea aplicației, rolul implicit, variabilele și metadatele din marketplace cu `defineApplication`.
icon: rocket
---

Fiecare aplicație trebuie să aibă exact un apel `defineApplication`. Acesta declară:

* **Identitate** — identificator universal, nume de afișare, descriere.
* **Permisiuni** — sub ce rol rulează funcțiile logice și componentele front-end ale acesteia.
* **Variabile** *(opțional)* — perechi cheie–valoare expuse codului dvs. ca variabile de mediu.
* **Hook-uri de pre-instalare / post-instalare** *(opțional)* — vedeți [Funcții logice](/l/ro/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,
    },
  },
});
```

Notițe:

* Câmpurile `universalIdentifier` sunt ID-uri deterministe pe care le dețineți. Generați-le o singură dată și mențineți-le stabile între sincronizări.
* `applicationVariables` devin variabile de mediu pentru funcțiile și componentele front-end. În funcțiile de logică (server-side), acestea sunt disponibile ca `process.env.VARIABLE_NAME`. În componentele front-end, folosește `getApplicationVariable('VARIABLE_NAME')` din `twenty-sdk/front-component`. Variabilele marcate cu `isSecret: true` sunt injectate doar în funcțiile de logică. Componentele front-end primesc doar variabile non-secrete.
* Rolul implicit este detectat automat din fișierul de rol marcat cu [`defineApplicationRole()`](/l/ro/developers/extend/apps/config/roles) — nu este necesar să faci referire la el în `defineApplication()`.
* Funcțiile de pre-instalare și post-instalare sunt detectate automat în timpul construirii manifestului — nu trebuie să le referiți în `defineApplication()`.
* Transmiterea explicită a `defaultRoleUniversalIdentifier` este în continuare acceptată pentru compatibilitate retroactivă, dar este considerată învechită în favoarea `defineApplicationRole()`.

## Rol implicit pentru funcții

Rolul declarat cu [`defineApplicationRole()`](/l/ro/developers/extend/apps/config/roles) controlează la ce pot avea acces funcțiile logice și componentele de interfață ale aplicației:

* Tokenul de runtime injectat ca `TWENTY_APP_ACCESS_TOKEN` este derivat din acest rol.
* Clientul API tipizat este restricționat la permisiunile acordate acelui rol.
* Respectați principiul celui mai mic privilegiu: declarați doar permisiunile de care au nevoie funcțiile.

Când generați o aplicație nouă, CLI creează un fișier de rol de pornire la `src/roles/default-role.ts`. Consultați [Roluri și permisiuni](/l/ro/developers/extend/apps/config/roles) pentru referința completă.

## Metadate pentru marketplace

Dacă intenționați să [publicați aplicația](/l/ro/developers/extend/apps/operations/publishing), aceste câmpuri opționale controlează modul în care apare în marketplace:

| Câmp               | Descriere                                                                                                                      |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| `author`           | Numele autorului sau al companiei                                                                                              |
| `category`         | Categoria aplicației pentru filtrarea în marketplace                                                                           |
| `logoUrl`          | Calea către logo-ul aplicației (de ex., `public/logo.png`)                                                                     |
| `screenshots`      | Array de căi către capturi de ecran (de ex., `public/screenshot-1.png`)                                                        |
| `aboutDescription` | Descriere markdown mai lungă pentru fila "About". Dacă este omis, marketplace-ul folosește `README.md` al pachetului de pe npm |
| `websiteUrl`       | Link către site-ul dvs.                                                                                                        |
| `termsUrl`         | Link către termenii de serviciu                                                                                                |
| `emailSupport`     | Adresă de e-mail pentru suport                                                                                                 |
| `issueReportUrl`   | Link către sistemul de urmărire a problemelor                                                                                  |
