Passer au contenu principal
Votre application fonctionne. La dernière étape consiste à la décrire pour le marché et à la publier.

Ajouter des métadonnées de marketplace

La configuration de l’application porte l’identité qui apparaît sur le marché : auteur, catégorie, logo et liens de support . Mettez un logo dans public/ et faites-le référence avec logoUrl.
import { defineApplication } from 'twenty-sdk/define';

export default defineApplication({
  universalIdentifier: APPLICATION_UNIVERSAL_IDENTIFIER,
  displayName: 'Document Generator',
  description:
    'Create reusable document templates and generate personalized documents from your CRM records.',
  logoUrl: 'public/document-generator.svg',
  author: 'Twenty',
  category: 'Productivity',
  websiteUrl: 'https://docs.twenty.com/l/fr/developers/extend/apps',
  termsUrl: 'https://www.twenty.com/terms',
  emailSupport: 'contact@twenty.com',
  issueReportUrl: 'https://github.com/twentyhq/twenty/issues',
});
Le rôle par défaut est déclaré avec defineApplicationRole() dans son propre fichier — vous ne passez plus ici defaultRoleUniversalIdentifier.
Ajoute également le mot-clé 21app à package.json pour que l’application soit découverte:
{ "keywords": ["twenty-app"] }

Ajouter des captures d’écran de la galerie

Une annonce boursière se vend avec des captures d’écran. Déposez quelques PNGs dans public/gallery/ et référencez-les avec screenshots — ils apparaissent comme une galerie sur la page de liste.
export default defineApplication({
  // ...identity from above
  screenshots: [
    'public/gallery/01-generated-document.png',
    'public/gallery/02-command-menu.png',
    'public/gallery/03-template-editor.png',
    'public/gallery/04-documents.png',
  ],
});
Menez avec le gain : faire la première capture d’écran le résultat fini (un document généré), puis montrez comment il est déclenché et créé. Utilisez des captures à haute résolution - c’est la première chose qu’un utilisateur voit.
Donnez le même traitement à README.md - c’est la première page sur npm et GitHub. Ouvrez avec la proposition de valeur et une capture d’écran, listez les fonctionnalités du titre, puis gardez les détails de construction sous le pli.

Vérifiez avant d’expédier

Exécuter les mêmes portes CI :
yarn lint          # oxlint
yarn typecheck     # tsgo
yarn test:unit     # unit tests
yarn twenty dev --once --dry-run   # preview the metadata diff
La course à sec imprime exactement ce qui pourrait changer sur le serveur sans l’appliquer — une bonne vérification de l’état d’esprit. Voir Testing et Synchronisation et récupération.

Publier

# Public app → npm (default)
yarn twenty app:publish

# Or deploy privately to a specific server's registry
yarn twenty app:publish --private -r <remote>
app:publish construit et publie sur npm par défaut; --private télécharge une archive vers un registre privé du serveur Vingt à la place. Pour faire surface à une application publiée dans une instance, déclenchez une synchronisation de catalogue :
yarn twenty dev:catalog-sync -r <remote>
Tous les détails et la liste de vérification de la version : Publishing.

Vous avez construit une application 🎉

Dans six chapitres, vous avez utilisé la plupart des surfaces du SDK :
  • Objets, champs et relations pour modéliser les données
  • Une fonction logique exposée comme un outil IA, une action de workflow, et des routes HTTP
  • Voires, navigation, une commande et un composant frontal pour l’interface utilisateur
  • Un agent + compétence pour la génération de langage naturel
  • Métadonnées du Marketplace et le flux de publication
L’application terminée est à packages/twenty-apps/examples/document-generator.

Où aller ensuite

Référence des données

Chaque type de champ, chaque relation et chaque option d’index.

Référence logique

Cron et les déclencheurs d’événements de base de données, le stockage de valeurs clés, les connexions OAuth.

Référence de mise en page

Mise en page des pages, widgets du tableau de bord et plus de surfaces de l’interface utilisateur.

Opérations

CLI, tests, télécommandes et CI.