--- title: Configuration de l'application description: Déclarez l'identité de votre application, son rôle par défaut, ses variables et ses métadonnées de la marketplace avec defineApplication. icon: rocket --- Chaque application doit avoir exactement un appel à `defineApplication`. Il déclare : * **Identité** — identifiant universel, nom d'affichage, description. * **Autorisations** — le rôle sous lequel s'exécutent ses fonctions logiques et ses composants front-end. * **Variables** *(facultatif)* — paires clé–valeur exposées à votre code en tant que variables d'environnement. * **Hooks de pré-installation / post-installation** *(facultatif)* — voir [Fonctions logiques](/l/fr/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, }, }, }); ``` Notes : * Les champs `universalIdentifier` sont des identifiants déterministes que vous contrôlez. Générez-les une fois et conservez-les stables entre les synchronisations. * `applicationVariables` deviennent des variables d'environnement pour vos fonctions et vos composants front-end. Dans les fonctions logiques (côté serveur), elles sont disponibles sous `process.env.VARIABLE_NAME`. Dans les composants front-end, utilisez `getApplicationVariable('VARIABLE_NAME')` depuis `twenty-sdk/front-component`. Les variables marquées avec `isSecret: true` sont uniquement injectées dans les fonctions logiques. Les composants front-end ne reçoivent que des variables non secrètes. * Le rôle par défaut est détecté automatiquement à partir du fichier de rôle marqué avec [`defineApplicationRole()`](/l/fr/developers/extend/apps/config/roles) — vous n’avez pas besoin d’y faire référence depuis `defineApplication()`. * Les fonctions de pré-installation et de post-installation sont détectées automatiquement lors de la construction du manifeste — vous n'avez pas besoin de les référencer dans `defineApplication()`. * Le passage explicite de `defaultRoleUniversalIdentifier` est toujours pris en charge pour des raisons de rétrocompatibilité, mais il est obsolète au profit de `defineApplicationRole()`. ## Rôle de fonction par défaut Le rôle déclaré avec [`defineApplicationRole()`](/l/fr/developers/extend/apps/config/roles) contrôle ce à quoi les fonctions logiques de l’application et les composants front peuvent accéder : * Le jeton d'exécution injecté sous `TWENTY_APP_ACCESS_TOKEN` est dérivé de ce rôle. * Le client d'API typé est limité aux autorisations accordées à ce rôle. * Appliquez le principe du moindre privilège : déclarez uniquement les autorisations dont vos fonctions ont besoin. Lorsque vous générez une nouvelle application, la CLI crée un fichier de rôle par défaut à `src/roles/default-role.ts`. Voir [Rôles et autorisations](/l/fr/developers/extend/apps/config/roles) pour la référence complète. ## Métadonnées de la marketplace Si vous prévoyez de [publier votre application](/l/fr/developers/extend/apps/operations/publishing), ces champs optionnels contrôlent la façon dont elle apparaît dans la marketplace : | Champ | Description | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | | `author` | Nom de l'auteur ou de l'entreprise | | `category` | Catégorie de l'application pour le filtrage dans la marketplace | | `logoUrl` | Chemin vers le logo de votre application (p. ex., `public/logo.png`) | | `screenshots` | Tableau de chemins de captures d'écran (p. ex., `public/screenshot-1.png`) | | `aboutDescription` | Description markdown plus longue pour l'onglet "À propos". S'il est omis, la marketplace utilise le `README.md` du package sur npm | | `websiteUrl` | Lien vers votre site web | | `termsUrl` | Lien vers les conditions d'utilisation | | `emailSupport` | Adresse e-mail du support | | `issueReportUrl` | Lien vers le système de suivi des problèmes |