Passer au contenu principal

Prérequis

  • Node.js 24+Télécharger
  • Yarn 4 — fourni avec Node.js via Corepack. Activez-le : corepack enable
  • DockerTélécharger. Nécessaire pour exécuter un serveur Twenty local. Ignorez si vous avez déjà Twenty en cours d’exécution ailleurs.
La création d’une 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 qu’il faut corriger.
PhaseCe que vous faitesOutilRésultat
1. GénérationGénérer le code source de l’applicationnpx create-twenty-appUn projet TypeScript sur le disque
2. Exécuter un serveurDémarrer un serveur Twenty vers lequel se synchroniserDocker + yarn twenty serverUne instance Twenty en cours d’exécution
3. SynchroniserSynchroniser en direct votre code avec le serveuryarn twenty devVos modifications apparaissent dans l’interface utilisateur

Phase 1 — Générez le squelette de votre projet

Créez une nouvelle application à partir du modèle :
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 d’intégration. Après cette phase : vous disposez du code source d’une application sur votre machine. Elle ne s’exécute pas encore — c’est la phase 2.

Phase 2 — Exécuter un serveur Twenty local

Votre application a besoin d’un 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 l’interface utilisateur. Le générateur propose d’en démarrer un pour vous :
Souhaitez-vous configurer une instance locale de Twenty ?
  • Oui (recommandé) — récupère l’image Docker twentycrm/twenty-app-dev et la démarre sur le port 2020. Assurez-vous d’abord que Docker est en cours d’exé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.
Faut-il démarrer l’instance locale ?
Une fois le serveur démarré, un navigateur s’ouvre pour la connexion. Utilisez le compte de démonstration prérempli :
  • E-mail : tim@apple.dev
  • Mot de passe : tim@apple.dev
Écran de connexion Twenty
Cliquez sur Authorize sur l’écran suivant — cela donne à la CLI l’accès à votre espace de travail.
Écran d’autorisation de la CLI Twenty
Votre terminal confirmera que tout est configuré.
Application initialisée avec succès
Après cette phase : vous disposez d’un serveur Twenty en cours d’exécution sur http://localhost:2020 avec votre CLI autorisée à s’y synchroniser.
Si Docker n’est pas installé ou en cours d’exécution, le générateur vous indiquera la bonne commande de démarrage pour votre système d’exploitation. Une fois Docker lancé, vous pouvez reprendre avec yarn twenty docker:start — pas besoin de régénérer le squelette.

Phase 3 — Synchroniser vos modifications

C’est la boucle interne dans laquelle vous passerez la plupart de votre temps.
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 d’erreurs), ajoutez --verbose.
Sortie du terminal en mode dev
Ouvrez http://localhost:2020/settings/applications#developer. Vous devriez voir votre application sous Your Apps.
La liste Your Apps affichant My twenty app
Cliquez sur My twenty app pour voir son application registration — un enregistrement au niveau du serveur décrivant votre application (nom, identifiant, informations d’identification OAuth, source). Un même enregistrement peut être installé dans plusieurs espaces de travail sur le même serveur.
Détails de l’enregistrement d’application
Cliquez sur View installed app pour voir l’installation dans l’espace de travail. L’onglet About affiche la version et les options de gestion.
Application installée
Après cette phase : vous disposez d’une boucle de développement en direct. Modifiez n’importe quel fichier dans src/ et il apparaît dans l’interface 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 :
yarn twenty dev --once
CommandeComportementQuand l’utiliser :
yarn twenty devSurveille et resynchronise à chaque modification. Reste en cours d’exécution jusqu’à ce que vous l’arrêtiez.Développement local interactif.
yarn twenty dev --onceUne 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-runConstruit et affiche les modifications de métadonnées sans les appliquer.Inspection de ce qu’une synchronisation changerait avant de s’y engager.
Les deux modes nécessitent un serveur distant authentifié. Voir synchronisation et récupération pour plus d’informations sur --dry-run.

Options du mode de développement

OptionDescription
--onceConstruire et synchroniser une fois, puis quitter.
--dry-runAvec --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 / --debugAfficher des journaux de build détaillés, les requêtes de synchronisation et les traces d’erreur.

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 champsModèles de données personnalisés (carte postale, facture, etc.) avec des champs typés
Fonctions logiquesFonctions 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 d’interface utilisateur (UI)Composants React qui s’affichent dans l’interface de Twenty (panneau latéral, widgets, menu de commandes)
Compétences et agentsFonctionnalités d’IA — instructions réutilisables et assistants autonomes
Vues et navigationVues de liste préconfigurées et éléments de menu de la barre latérale
Mises en pagePages de détail d’enregistrement personnalisées avec des onglets et des widgets
Référence complète : Concepts.

Prochaines étapes

Configuration

Identité de l’application, rôle par défaut, hooks d’installation, ressources publiques.

Données

Objets, champs et relations bidirectionnelles.

Logique

Fonctions logiques, compétences, agents et connexions OAuth.

Disposition

Vues, navigation, mises en page, composants front-end.

Opérations

CLI, tests, dépôts distants, CI et publication de votre application.