i18n - docs translations (#21789)

Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
github-actions[bot]
2026-06-18 15:21:04 +02:00
committed by GitHub
parent 22baf2c6c5
commit 2b3b2362db
704 changed files with 38268 additions and 9002 deletions
@@ -0,0 +1,101 @@
---
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>
@@ -0,0 +1,87 @@
---
title: Serveur local
description: Gérez le serveur Docker local de Twenty — démarrage, arrêt, mise à niveau, instance de test parallèle et configuration manuelle du SDK.
icon: server
---
## Gestion du serveur local
Utilisez `yarn twenty docker:*` pour contrôler le conteneur Twenty local :
| Commande | Ce que cela fait |
| -------------------------------------- | ---------------------------------------------------------- |
| `yarn twenty docker:start` | Démarre le serveur (récupère limage si nécessaire) |
| `yarn twenty docker:start 2.2.0` | Démarrer une version spécifique du serveur |
| `yarn twenty docker:start --port 3030` | Démarre sur un port personnalisé |
| `yarn twenty docker:stop` | Arrête le serveur (préserve les données) |
| `yarn twenty docker:status` | Affiche lURL, la version et les identifiants de connexion |
| `yarn twenty docker:logs` | Diffuse les journaux du serveur |
| `yarn twenty docker:reset` | Efface les données et repart de zéro |
| `yarn twenty docker:upgrade` | Récupère la dernière image `twenty-app-dev` |
| `yarn twenty docker:upgrade 2.2.0` | Met à niveau vers une version spécifique |
Les données sont conservées entre les redémarrages dans deux volumes Docker (`twenty-app-dev-data` pour PostgreSQL, `twenty-app-dev-storage` pour les fichiers). Utilisez `reset` pour tout effacer.
## Figer la version du serveur
Lorsquaucune version nest fournie, `docker:start` résout la version à partir de la plage `engines.twenty` de votre `package.json` — la même plage que le serveur utilise pour la validation lors de linstallation de votre application. Il démarre limage `twenty-app-dev` la plus récente publiée qui satisfait la plage, et revient à `latest` lorsque le champ est absent ou quaucune version publiée ne correspond :
```json filename="package.json"
{
"engines": {
"twenty": ">=2.2.0"
}
}
```
Passez explicitement une version pour remplacer la plage pour une seule exécution : `yarn twenty docker:start 2.3.0`. Si un conteneur existe déjà avec une version différente, `docker:start` le met à niveau sur place (en recréant le conteneur tout en préservant vos volumes de données).
## Mise à niveau de limage du serveur
`yarn twenty docker:upgrade` récupère la dernière image, compare les empreintes et ne recrée le conteneur que si quelque chose a réellement changé. Les volumes sont conservés — seul le conteneur est remplacé. Si une nouvelle image a été récupérée et que le conteneur était en cours dexécution, la mise à niveau démarre automatiquement un nouveau conteneur ; exécutez ensuite `yarn twenty docker:start` pour attendre quil devienne opérationnel.
```bash filename="Terminal"
yarn twenty docker:upgrade # Latest
yarn twenty docker:upgrade 2.2.0 # Specific version
```
Vérifiez la version en cours dexécution avec `yarn twenty docker:status` (elle affiche la valeur de `APP_VERSION` intégrée au conteneur).
## Exécuter une instance de test parallèle
Passez `--test` à nimporte quelle commande `docker:*` pour gérer une deuxième instance totalement isolée — utile pour les tests dintégration ou pour expérimenter sans toucher à vos données de développement principales :
| Commande | Ce que cela fait |
| ----------------------------------- | ------------------------------------------------- |
| `yarn twenty docker:start --test` | Démarre linstance de test (port 2021 par défaut) |
| `yarn twenty docker:stop --test` | Larrête |
| `yarn twenty docker:status --test` | Affiche son statut |
| `yarn twenty docker:logs --test` | Diffuse ses journaux |
| `yarn twenty docker:reset --test` | Efface ses données |
| `yarn twenty docker:upgrade --test` | Met à niveau son image |
Linstance de test possède son propre conteneur (`twenty-app-dev-test`), ses volumes (`twenty-app-dev-test-data`, `twenty-app-dev-test-storage`) et sa configuration — elle sexécute parallèlement à votre instance principale sans conflits. Combinez `--test` avec `--port` pour remplacer le port 2021.
## Configuration manuelle (sans le générateur)
Ignorez le générateur si vous ajoutez le SDK à un projet existant :
```bash filename="Terminal"
yarn add twenty-sdk twenty-client-sdk
```
Ajoutez le script à `package.json` :
```json filename="package.json"
{
"scripts": {
"twenty": "twenty"
}
}
```
Vous pouvez maintenant exécuter `yarn twenty dev`, `yarn twenty docker:start` et le reste.
<Note>
Ninstallez pas `twenty-sdk` globalement — figez-le par projet afin que chaque application utilise sa propre version.
</Note>
@@ -0,0 +1,61 @@
---
title: Structure du projet
description: Ce qui se trouve à lintérieur dune application Twenty générée par un modèle — fichiers, dossiers et le rôle de chacun.
icon: folder-tree
---
Une nouvelle application générée par `npx create-twenty-app` ressemble à ceci :
```text filename="my-twenty-app/"
my-twenty-app/
package.json
src/
application-config.ts # Required — your app's entry point
default-role.ts # Permissions for logic functions
constants/
universal-identifiers.ts # Auto-generated UUIDs and metadata
__tests__/
setup-test.ts
app-install.integration-test.ts
.github/workflows/ci.yml # GitHub Actions
public/ # Static assets
vitest.config.ts # Test runner config
tsconfig.json, tsconfig.spec.json
.nvmrc, .yarnrc.yml, .oxlintrc.json
README.md, LLMS.md
```
## Fichiers clés
| Fichier / Dossier | Objectif |
| ---------------------------------------- | -------------------------------------------------------------------------------------------- |
| `src/application-config.ts` | **Requis.** Le fichier de configuration principal de votre application. |
| `src/default-role.ts` | Rôle par défaut qui contrôle ce à quoi vos fonctions de logique peuvent accéder. |
| `src/constants/universal-identifiers.ts` | UUID générés automatiquement et métadonnées de lapplication (nom daffichage, description). |
| `src/__tests__/` | Tests dintégration (configuration + test dexemple). |
| `public/` | Ressources statiques (images, polices) servies avec votre application. |
<Note>
**Lorganisation des fichiers vous revient.** Les dossiers ci-dessus sont des conventions — le SDK détecte les entités via une analyse AST sur les appels à `export default defineEntity(...)` quel que soit lemplacement du fichier.
</Note>
## Dépendances
Les deux packages du SDK Twenty doivent être placés dans `devDependencies`, et non dans `dependencies` :
```json filename="package.json"
{
"dependencies": {},
"devDependencies": {
"twenty-client-sdk": "^2.13.0",
"twenty-sdk": "^2.13.0"
}
}
```
* **`twenty-sdk`** fournit le CLI `twenty` ainsi que les outils de build et de scaffolding. Il ne sexécute quau moment du développement et du build et nest jamais importé par le runtime de lapplication que vous publiez.
* **`twenty-client-sdk`** *est* importé par le code de votre application (`CoreApiClient`, `MetadataApiClient`, `RestApiClient`), mais Twenty le fournit au moment de lexécution : les fonctions de logique lobtiennent à partir dune couche SDK générée, et les composants front le résolvent à partir de modules servis par le serveur. La copie que vous avez installée est uniquement utilisée pour la vérification de type et le build au moment du déploiement, elle na donc jamais besoin d’être incluse dans le bundle déployé.
Conserver lun ou lautre package dans `dependencies` lintègre dans le bundle runtime de lapplication installée, où il ne fait que lalourdir inutilement. `twenty build` émet un avertissement lorsque lun ou lautre est encore répertorié dans `dependencies`.
Ajoutez les dépendances runtime propres à votre application (les bibliothèques que vos fonctions logiques importent réellement à lexécution) dans `dependencies` comme dhabitude.
@@ -0,0 +1,176 @@
---
title: Démarrage rapide
icon: rocket
description: Créez votre première application Twenty en quelques minutes.
---
## Prérequis
* **Node.js 24+** — [Télécharger](https://nodejs.org/)
* **Yarn 4** — fourni avec Node.js via Corepack. Activez-le : `corepack enable`
* **Docker** — [Télécharger](https://www.docker.com/products/docker-desktop/). Nécessaire pour exécuter un serveur Twenty local. Ignorez si vous avez déjà Twenty en cours dexécution ailleurs.
La création dune application Twenty comporte trois phases. Le générateur les regroupe en une seule commande pour le parcours idéal, mais chaque phase est un concept distinct — en cas d’échec, savoir dans quelle phase vous vous trouvez indique ce quil faut corriger.
| Phase | Ce que vous faites | Outil | Résultat |
| -------------------------- | ------------------------------------------------------ | ----------------------------- | ----------------------------------------------------------- |
| **1. Génération** | Générer le code source de lapplication | `npx create-twenty-app` | Un projet TypeScript sur le disque |
| **2. Exécuter un serveur** | Démarrer un serveur Twenty vers lequel se synchroniser | Docker + `yarn twenty server` | Une instance Twenty en cours dexécution |
| **3. Synchroniser** | Synchroniser en direct votre code avec le serveur | `yarn twenty dev` | Vos modifications apparaissent dans linterface utilisateur |
---
## Phase 1 — Générez le squelette de votre projet
Créez une nouvelle application à partir du modèle :
```bash filename="Terminal"
npx create-twenty-app@latest my-twenty-app
```
On vous demandera un nom et une description — appuyez sur **Entrée** pour utiliser les valeurs par défaut. Cela génère un projet TypeScript dans `my-twenty-app/` avec un fichier de démarrage `application-config.ts`, un rôle par défaut, un workflow CI et un test dintégration.
**Après cette phase :** vous disposez du code source dune application sur votre machine. Elle ne sexécute pas encore — cest la phase 2.
---
## Phase 2 — Exécuter un serveur Twenty local
Votre application a besoin dun serveur Twenty vers lequel se synchroniser. Le serveur est une instance Twenty complète — interface utilisateur, API GraphQL, PostgreSQL — exécutée localement dans Docker. Votre code local envoie ses définitions à ce serveur, qui les fait apparaître dans linterface utilisateur.
Le générateur propose den démarrer un pour vous :
> **Souhaitez-vous configurer une instance locale de Twenty ?**
* **Oui (recommandé)** — récupère limage Docker `twentycrm/twenty-app-dev` et la démarre sur le port `2020`. Assurez-vous dabord que Docker est en cours dexécution.
* **Non** — choisissez cette option si vous avez déjà un serveur Twenty auquel vous souhaitez vous connecter. Vous pourrez le connecter plus tard avec `yarn twenty remote:add`.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/start-instance.png" alt="Faut-il démarrer linstance locale ?" />
</div>
Une fois le serveur démarré, un navigateur souvre pour la connexion. Utilisez le compte de démonstration prérempli :
* **E-mail :** `tim@apple.dev`
* **Mot de passe :** `tim@apple.dev`
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/login.png" alt="Écran de connexion Twenty" />
</div>
Cliquez sur **Authorize** sur l’écran suivant — cela donne à la CLI laccès à votre espace de travail.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/authorize.png" alt="Écran dautorisation de la CLI Twenty" />
</div>
Votre terminal confirmera que tout est configuré.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/scaffolded.png" alt="Application initialisée avec succès" />
</div>
**Après cette phase :** vous disposez dun serveur Twenty en cours dexécution sur [http://localhost:2020](http://localhost:2020) avec votre CLI autorisée à sy synchroniser.
<Note>
Si Docker nest pas installé ou en cours dexécution, le générateur vous indiquera la bonne commande de démarrage pour votre système dexploitation. Une fois Docker lancé, vous pouvez reprendre avec `yarn twenty docker:start` — pas besoin de régénérer le squelette.
</Note>
---
## Phase 3 — Synchroniser vos modifications
Cest la boucle interne dans laquelle vous passerez la plupart de votre temps.
```bash filename="Terminal"
cd my-twenty-app
yarn twenty dev
```
Cela surveille `src/`, reconstruit à chaque modification et synchronise le résultat avec le serveur. Modifiez un fichier, enregistrez, et en quelques secondes le serveur reflète la modification. Vous verrez un panneau d’état en direct dans votre terminal.
Pour une sortie plus détaillée (journaux de build, requêtes de synchronisation, traces derreurs), ajoutez `--verbose`.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/dev.png" alt="Sortie du terminal en mode dev" />
</div>
Ouvrez [http://localhost:2020/settings/applications#developer](http://localhost:2020/settings/applications#developer). Vous devriez voir votre application sous **Your Apps**.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/app-in-ui-1.png" alt="La liste Your Apps affichant My twenty app" />
</div>
Cliquez sur **My twenty app** pour voir son **application registration** — un enregistrement au niveau du serveur décrivant votre application (nom, identifiant, informations didentification OAuth, source). Un même enregistrement peut être installé dans plusieurs espaces de travail sur le même serveur.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/app-in-ui-2.png" alt="Détails de lenregistrement dapplication" />
</div>
Cliquez sur **View installed app** pour voir linstallation dans lespace de travail. Longlet **About** affiche la version et les options de gestion.
<div style={{textAlign: 'center'}}>
<img src="/images/docs/developers/extends/apps/app-in-ui-3.png" alt="Application installée" />
</div>
**Après cette phase :** vous disposez dune boucle de développement en direct. Modifiez nimporte quel fichier dans `src/` et il apparaît dans linterface utilisateur.
### Synchronisation ponctuelle pour la CI et les scripts
Passez `--once` pour exécuter une seule opération de build + synchronisation puis quitter — même pipeline, pas de watcher :
```bash filename="Terminal"
yarn twenty dev --once
```
| Commande | Comportement | Quand l'utiliser : |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `yarn twenty dev` | Surveille et resynchronise à chaque modification. Reste en cours dexécution jusqu’à ce que vous larrêtiez. | Développement local interactif. |
| `yarn twenty dev --once` | Une seule opération de build + synchronisation, se termine avec le code `0` en cas de réussite et `1` en cas d’échec. | CI, hooks de pré-commit, agents IA et flux de travail scriptés. |
| `yarn twenty dev --once --dry-run` | Construit et affiche les modifications de métadonnées **sans les appliquer**. | Inspection de ce quune synchronisation changerait avant de sy engager. |
Les deux modes nécessitent un serveur distant authentifié. Voir [synchronisation et récupération](/l/fr/developers/extend/apps/operations/sync-and-recovery#previewing-changes-dry-run) pour plus dinformations sur `--dry-run`.
### Options du mode de développement
| Option | Description |
| ------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `--once` | Construire et synchroniser une fois, puis quitter. |
| `--dry-run` | Avec `--once`, prévisualisez les modifications de métadonnées sans les appliquer. N’écrit rien. |
| `--debounceMs \<ms>` | Définir le délai de temporisation des modifications de fichiers en millisecondes (valeur par défaut : `2000`). |
| `--verbose` / `--debug` | Afficher des journaux de build détaillés, les requêtes de synchronisation et les traces derreur. |
## Ce que vous pouvez créer
Les applications sont composées d**entités** — chacune définie comme un fichier TypeScript avec un seul `export default` :
| Entité | Ce que cela fait |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **Objets et champs** | Modèles de données personnalisés (carte postale, facture, etc.) avec des champs typés |
| **Fonctions logiques** | Fonctions TypeScript côté serveur déclenchées par des routes HTTP, des tâches cron ou des événements de base de données |
| **Composants dinterface utilisateur (UI)** | Composants React qui saffichent dans linterface de Twenty (panneau latéral, widgets, menu de commandes) |
| **Compétences et agents** | Fonctionnalités dIA — instructions réutilisables et assistants autonomes |
| **Vues et navigation** | Vues de liste préconfigurées et éléments de menu de la barre latérale |
| **Mises en page** | Pages de détail denregistrement personnalisées avec des onglets et des widgets |
Référence complète : [Concepts](/l/fr/developers/extend/apps/getting-started/concepts).
## 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, hooks dinstallation, ressources publiques.
</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>
@@ -0,0 +1,58 @@
---
title: Génération
description: Générez des fichiers d'entité de manière interactive avec `yarn twenty dev:add` — objets, champs, vues, fonctions logiques et plus encore.
icon: wand-magic-sparkles
---
Au lieu de créer manuellement les fichiers d'entité, utilisez l'outil de génération interactif :
```bash filename="Terminal"
yarn twenty dev:add
```
Il vous invite à choisir un type d'entité, vous guide à travers les champs requis, puis écrit un fichier prêt à l'emploi avec un `universalIdentifier` stable et l'appel `defineEntity()` correct.
Vous pouvez également passer directement le type d'entité pour ignorer la première invite :
```bash filename="Terminal"
yarn twenty dev:add object
yarn twenty dev:add logicFunction
yarn twenty dev:add frontComponent
```
## Types dentités disponibles
| Type dentité | Commande | Fichier généré |
| ----------------------------- | ---------------------------------------- | ------------------------------------------------------- |
| Objet | `yarn twenty dev:add object` | `src/objects/\<name>.ts` |
| Champ | `yarn twenty dev:add field` | `src/fields/\<name>.ts` |
| Fonction logique | `yarn twenty dev:add logicFunction` | `src/logic-functions/\<name>.ts` |
| Composant frontal | `yarn twenty dev:add frontComponent` | `src/front-components/\<name>.tsx` |
| Rôle | `yarn twenty dev:add role` | `src/roles/\<name>.ts` |
| Compétence | `yarn twenty dev:add skill` | `src/skills/\<name>.ts` |
| Agent | `yarn twenty dev:add agent` | `src/agents/\<name>.ts` |
| Vue | `yarn twenty dev:add view` | `src/views/\<name>.ts` |
| Élément de menu de navigation | `yarn twenty dev:add navigationMenuItem` | `src/navigation-menu-items/\<name>.ts` |
| Mise en page | `yarn twenty dev:add pageLayout` | `src/page-layouts/\<name>.ts` |
## Ce que génère l'outil de génération
Chaque type d'entité a son propre modèle. Par exemple, `yarn twenty dev:add object` demande :
1. **Nom (singulier)** — p. ex., `invoice`
2. **Nom (pluriel)** — p. ex., `invoices`
3. **Libellé (singulier)** — rempli automatiquement depuis le nom (p. ex., `Invoice`)
4. **Libellé (pluriel)** — rempli automatiquement (p. ex., `Invoices`)
5. **Créer une vue et un élément de navigation ?** — si vous répondez oui, l'outil génère également une vue correspondante et un lien de barre latérale pour le nouvel objet.
Les autres types d'entités ont des invites plus simples — la plupart ne demandent qu'un nom.
Le type d'entité `field` est plus détaillé : il demande le nom du champ, son libellé, son type (à partir d'une liste de tous les types de champs disponibles comme `TEXT`, `NUMBER`, `SELECT`, `RELATION`, etc.), et le `universalIdentifier` de l'objet cible.
## Chemin de sortie personnalisé
Utilisez l'option `--path` pour placer le fichier généré à un emplacement personnalisé :
```bash filename="Terminal"
yarn twenty dev:add logicFunction --path src/custom-folder
```
@@ -0,0 +1,14 @@
---
title: Résolution des problèmes
description: Problèmes courants lors de la première exécution — Docker, version de Node, Yarn, dépendances.
icon: clé
---
* **Erreurs Docker** — Assurez-vous que Docker Desktop (ou le démon) est en cours dexécution avant `yarn twenty docker:start`. Le message derreur indiquera la bonne commande de démarrage pour votre système dexploitation.
* **Mauvaise version de Node** — la version 24+ est requise. Vérifiez avec `node -v`.
* **Yarn 4 manquant** — Exécutez `corepack enable`.
* **Dépendances cassées** — `rm -rf node_modules && yarn install`.
* **Erreurs de `twenty-sdk` après la mise à niveau vers la v2.8.0** — il est passé de `dependencies` à `devDependencies` dans la v2.8.0. Voir [Structure du projet → Dépendances](/l/fr/developers/extend/apps/getting-started/project-structure#dependencies).
* **`twenty build` avertit au sujet de `twenty-client-sdk` dans `dependencies`** — il est fourni au moment de lexécution par Twenty, donc il devrait être déplacé vers `devDependencies` avec `twenty-sdk`. Voir [Structure du projet → Dépendances](/l/fr/developers/extend/apps/getting-started/project-structure#dependencies).
Bloqué ? Demandez de laide sur le [Discord de Twenty](https://discord.com/channels/1130383047699738754/1130386664812982322).