Files
twenty/packages/twenty-docs/l/fr/developers/extend/apps/getting-started/concepts.mdx
T
github-actions[bot] 2b3b2362db i18n - docs translations (#21789)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-06-18 15:21:04 +02:00

102 lines
8.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Concepts
description: Fonctionnement des applications Twenty — modèle dentité, sandboxing et cycle de vie de linstallation.
icon: sitemap
---
Les applications Twenty sont des packages TypeScript qui étendent votre espace de travail avec des objets personnalisés, de la logique, des composants dinterface utilisateur et des capacités dIA. Elles sexécutent sur la plateforme Twenty avec une isolation complète en bac à sable et des contrôles dautorisations.
## Fonctionnement des applications
Une application est un ensemble d**entités** déclarées à laide des fonctions `defineEntity()` du package `twenty-sdk`. Le SDK détecte ces déclarations via une analyse de lAST au moment de la compilation et produit un **manifeste** — une description complète de ce que votre application ajoute à un espace de travail. Ces fonctions valident votre configuration au moment de la compilation et offrent lautocomplétion dans lIDE et une sécurité de typage.
```
your-app/
├── src/
│ ├── application-config.ts ← defineApplication (required, one per app)
│ ├── roles/ ← defineRole
│ ├── objects/ ← defineObject
│ ├── fields/ ← defineField
│ ├── logic-functions/ ← defineLogicFunction
│ ├── front-components/ ← defineFrontComponent
│ ├── skills/ ← defineSkill
│ ├── agents/ ← defineAgent
│ ├── views/ ← defineView
│ ├── navigation-menu-items/ ← defineNavigationMenuItem
│ └── page-layouts/ ← definePageLayout
├── public/ ← Static assets (images, icons)
└── package.json
```
<Note>
**Lorganisation des fichiers vous revient.** La détection des entités est basée sur lAST — le SDK trouve les appels à `export default defineEntity(...)` quel que soit lemplacement du fichier. La structure de dossiers ci-dessus est une convention, pas une obligation.
</Note>
## Types dentités
| Entité | Objectif | Documentation |
| --------------------------------- | --------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| **Application** | Identité de lapplication, rôle par défaut, variables | [Configuration de lapplication](/l/fr/developers/extend/apps/config/application) |
| **Rôle** | Ensembles dautorisations pour les objets et les champs | [Rôles et autorisations](/l/fr/developers/extend/apps/config/roles) |
| **Objet** | Types denregistrements personnalisés avec des champs | [Objets](/l/fr/developers/extend/apps/data/objects) |
| **Champ** | Ajouter des champs à des objets provenant dautres applications | [Extension des objets](/l/fr/developers/extend/apps/data/extending-objects) |
| **Relation** | Liens bidirectionnels entre les objets | [Relations](/l/fr/developers/extend/apps/data/relations) |
| **Fonction logique** | TypeScript côté serveur avec des déclencheurs | [Fonctions logiques](/l/fr/developers/extend/apps/logic/logic-functions) |
| **Compétence** | Instructions réutilisables pour des agents dIA | [Compétences et agents](/l/fr/developers/extend/apps/logic/skills-and-agents) |
| **Agent** | Assistants dIA avec des prompts personnalisés | [Compétences et agents](/l/fr/developers/extend/apps/logic/skills-and-agents) |
| **Fournisseur de connexion** | Identifiants OAuth pour les API tierces | [Connexions](/l/fr/developers/extend/apps/logic/connections) |
| **Vue** | Vues de liste denregistrements préconfigurées | [Vues](/l/fr/developers/extend/apps/layout/views) |
| **Élément de menu de navigation** | Entrées personnalisées de la barre latérale | [Éléments du menu de navigation](/l/fr/developers/extend/apps/layout/navigation-menu-items) |
| **Mise en page** | Onglets et widgets sur la page de détails dun enregistrement | [Mises en page](/l/fr/developers/extend/apps/layout/page-layouts) |
| **Composant frontal** | Interface React isolée en bac à sable dans Twenty | [Composants frontaux](/l/fr/developers/extend/apps/layout/front-components) |
| **Élément du menu de commande** | Actions rapides et entrées Cmd+K | [Éléments du menu de commande](/l/fr/developers/extend/apps/layout/command-menu-items) |
## Exécution en bac à sable
* **Les fonctions logiques** sexécutent dans des processus Node.js isolés sur le serveur. Elles naccèdent aux données quau moyen du client dAPI typé, limité par les autorisations du rôle de lapplication.
* **Les composants frontaux** sexécutent dans des Web Workers en utilisant Remote DOM — isolés en bac à sable de la page principale mais rendant des éléments DOM natifs (pas diframes). Ils communiquent avec Twenty via une API hôte de passage de messages.
* **Les autorisations** sont appliquées au niveau de lAPI. Le jeton dexécution (`TWENTY_APP_ACCESS_TOKEN`) est dérivé du rôle défini dans `defineApplication()`.
## Cycle de vie de lapplication
```
┌─────────────────────────────────────────────────────────┐
│ Development │
│ npx create-twenty-app → yarn twenty dev (live sync) │
├─────────────────────────────────────────────────────────┤
│ Build & Deploy │
│ yarn twenty dev:build → yarn twenty app:publish │
├─────────────────────────────────────────────────────────┤
│ Install flow │
│ upload → [pre-install] → metadata migration → │
│ generate SDK → [post-install] │
├─────────────────────────────────────────────────────────┤
│ Publish │
│ npm publish → appears in Twenty marketplace │
└─────────────────────────────────────────────────────────┘
```
* **`yarn twenty dev`** — surveille vos fichiers source et synchronise en direct les modifications avec un serveur Twenty connecté. Le client dAPI typé est régénéré automatiquement lorsque le schéma change.
* **`yarn twenty dev:build`** — compile TypeScript, regroupe les fonctions logiques et les composants frontaux avec esbuild, et produit un manifeste.
* **Hooks pré/post-install** — fonctions optionnelles qui sexécutent pendant linstallation. Voir [Install Hooks](/l/fr/developers/extend/apps/config/install-hooks) pour plus de détails.
## Prochaines étapes
<CardGroup cols={2}>
<Card title="Configuration" icon="screwdriver-wrench" href="/l/fr/developers/extend/apps/config/overview">
Identité de lapplication, rôle par défaut et hooks dinstallation.
</Card>
<Card title="Données" icon="database" href="/l/fr/developers/extend/apps/data/overview">
Objets, champs et relations bidirectionnelles.
</Card>
<Card title="Logique" icon="bolt" href="/l/fr/developers/extend/apps/logic/overview">
Fonctions logiques, compétences, agents et connexions OAuth.
</Card>
<Card title="Disposition" icon="table-columns" href="/l/fr/developers/extend/apps/layout/overview">
Vues, navigation, mises en page, composants front-end.
</Card>
<Card title="Opérations" icon="rocket" href="/l/fr/developers/extend/apps/operations/overview">
CLI, tests, dépôts distants, CI et publication de votre application.
</Card>
</CardGroup>