Passer au contenu principal
Une nouvelle application générée par npx create-twenty-app ressemble à ceci :
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 / DossierObjectif
src/application-config.tsRequis. Le fichier de configuration principal de votre application.
src/default-role.tsRôle par défaut qui contrôle ce à quoi vos fonctions de logique peuvent accéder.
src/constants/universal-identifiers.tsUUID générés automatiquement et métadonnées de l’application (nom d’affichage, description).
src/__tests__/Tests d’intégration (configuration + test d’exemple).
public/Ressources statiques (images, polices) servies avec votre application.
L’organisation 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 l’emplacement du fichier.

Dépendances

Les deux packages du SDK Twenty doivent être placés dans devDependencies, et non dans dependencies :
{
  "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 s’exécute qu’au moment du développement et du build et n’est jamais importé par le runtime de l’application que vous publiez.
  • twenty-client-sdk est importé par le code de votre application (CoreApiClient, MetadataApiClient, RestApiClient), mais Twenty le fournit au moment de l’exécution : les fonctions de logique l’obtiennent à partir d’une 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 n’a donc jamais besoin d’être incluse dans le bundle déployé.
Conserver l’un ou l’autre package dans dependencies l’intègre dans le bundle runtime de l’application installée, où il ne fait que l’alourdir inutilement. twenty build émet un avertissement lorsque l’un ou l’autre est encore répertorié dans dependencies. Ajoutez les dépendances runtime propres à votre application (les bibliothèques que vos fonctions logiques importent réellement à l’exécution) dans dependencies comme d’habitude.