- Benutzerdefinierte Objekte und Felder als Code definieren (verwaltetes Datenmodell)
- Erstellen Sie Logikfunktionen mit benutzerdefinierten Triggern (HTTP-Routen, cron, Datenbankereignisse)
- Fähigkeiten für KI-Agenten definieren
- Erstellen Sie Frontend-Komponenten, die in der Twenty-UI gerendert werden
- Dieselbe App in mehreren Workspaces bereitstellen
Voraussetzungen
- Node.js 24+ und Yarn 4
- Ein Twenty-Workspace und ein API-Schlüssel (unter https://app.twenty.com/settings/api-webhooks erstellen)
Erste Schritte
Erstellen Sie mit dem offiziellen Scaffolder eine neue App, authentifizieren Sie sich und beginnen Sie mit der Entwicklung:Projektstruktur (vom Scaffolder erzeugt)
Wenn Sienpx create-twenty-app@latest my-twenty-app ausführen, erledigt der Scaffolder Folgendes:
- Kopiert eine minimale Basisanwendung nach
my-twenty-app/ - Fügt eine lokale
twenty-sdk-Abhängigkeit und die Yarn-4-Konfiguration hinzu - Erstellt Konfigurationsdateien und Skripte, die an die
twenty-CLI angebunden sind - Erzeugt Kerndateien (Anwendungskonfiguration, Standardrolle für Logikfunktionen, Pre-Installations- und Post-Installationsfunktionen) sowie Beispieldateien entsprechend dem Scaffolding-Modus
--exhaustive sieht so aus:
--minimal werden nur die Kerndateien erstellt (application-config.ts, roles/default-role.ts, logic-functions/pre-install.ts und logic-functions/post-install.ts).
Auf hoher Ebene:
- package.json: Deklariert den App-Namen, die Version und die Engines (Node 24+, Yarn 4) und fügt
twenty-sdksowie eintwenty-Skript hinzu, das an die lokaletwenty-CLI delegiert. Führen Sieyarn twenty helpaus, um alle verfügbaren Befehle aufzulisten. - .gitignore: Ignoriert übliche Artefakte wie
node_modules,.yarn,generated/(typisierter Client),dist/,build/, Coverage-Ordner, Logdateien und.env*-Dateien. - yarn.lock, .yarnrc.yml, .yarn/: Fixieren und konfigurieren die vom Projekt verwendete Yarn-4-Toolchain.
- .nvmrc: Legt die vom Projekt erwartete Node.js-Version fest.
- .oxlintrc.json und tsconfig.json: Stellen Linting und TypeScript-Konfiguration für die TypeScript-Quellen Ihrer App bereit.
- README.md: Ein kurzes README im App-Root mit grundlegenden Anweisungen.
- public/: Ein Ordner zum Speichern öffentlicher Assets (Bilder, Schriftarten, statische Dateien), die zusammen mit Ihrer Anwendung bereitgestellt werden. Hier abgelegte Dateien werden während der Synchronisierung hochgeladen und sind zur Laufzeit zugänglich.
- src/: Der Hauptort, an dem Sie Ihre Anwendung als Code definieren
Entitätserkennung
Das SDK erkennt Entitäten, indem es Ihre TypeScript-Dateien nach Aufrufen vonexport default define<Entity>({...}) parst. Für jeden Entitätstyp gibt es eine entsprechende Hilfsfunktion, die aus twenty-sdk exportiert wird:
| Hilfsfunktion | Entitätstyp |
|---|---|
defineObject | Benutzerdefinierte Objektdefinitionen |
defineLogicFunction | Definitionen von Logikfunktionen |
definePreInstallLogicFunction | Pre-Installations-Logikfunktion (wird vor der Installation ausgeführt) |
definePostInstallLogicFunction | Post-Installations-Logikfunktion (wird nach der Installation ausgeführt) |
defineFrontComponent | Definitionen von Frontend-Komponenten |
defineRole | Rollendefinitionen |
defineField | Felderweiterungen für bestehende Objekte |
defineView | Gespeicherte View-Definitionen |
defineNavigationMenuItem | Definitionen von Navigationsmenüeinträgen |
defineSkill | Skill-Definitionen für KI-Agenten |
Dateibenennung ist flexibel. Die Entitätserkennung ist AST-basiert — das SDK durchsucht Ihre Quelldateien nach dem Muster
export default define<Entity>({...}). Sie können Ihre Dateien und Ordner nach Belieben organisieren. Die Gruppierung nach Entitätstyp (z. B. logic-functions/, roles/) ist lediglich eine Konvention zur Codeorganisation, keine Voraussetzung.yarn twenty app:devgeneriert automatisch zwei typisierte API-Clients innode_modules/twenty-sdk/generated:CoreApiClient(für Arbeitsbereichsdaten über/graphql) undMetadataApiClient(für Arbeitsbereichskonfiguration und Datei-Uploads über/metadata).yarn twenty entity:addfügt untersrc/Entitätsdefinitionsdateien für Ihre benutzerdefinierten Objekte, Funktionen, Frontend-Komponenten, Rollen, Skills und mehr hinzu.
Authentifizierung
Wenn Sieyarn twenty auth:login zum ersten Mal ausführen, werden Sie nach Folgendem gefragt:
- API-URL (standardmäßig http://localhost:3000 oder Ihr aktuelles Workspace-Profil)
- API-Schlüssel
~/.twenty/config.json gespeichert. Sie können mehrere Profile verwalten und zwischen ihnen wechseln.
Arbeitsbereiche verwalten
yarn twenty auth:switch den Arbeitsbereich gewechselt haben, verwenden alle nachfolgenden Befehle standardmäßig diesen Arbeitsbereich. Sie können es weiterhin vorübergehend mit --workspace <name> überschreiben.
Manuelle Einrichtung (ohne Scaffolder)
Wir empfehlen zwarcreate-twenty-app für das beste Einstiegserlebnis, Sie können ein Projekt aber auch manuell einrichten. Installieren Sie die CLI nicht global. Fügen Sie stattdessen twenty-sdk als lokale Abhängigkeit hinzu und binden Sie ein einzelnes Skript in Ihrer package.json ein:
twenty-Skript hinzu:
yarn twenty <command> ausführen, z. B. yarn twenty app:dev, yarn twenty help usw.
Fehlerbehebung
- Authentifizierungsfehler: Führen Sie
yarn twenty auth:loginaus und stellen Sie sicher, dass Ihr API-Schlüssel die erforderlichen Berechtigungen hat. - Verbindung zum Server nicht möglich: Überprüfen Sie die API-URL und dass der Twenty-Server erreichbar ist.
- Typen oder Client fehlen/veraltet: Starten Sie
yarn twenty app:devneu — der typisierte Client wird automatisch generiert. - Dev-Modus synchronisiert nicht: Stellen Sie sicher, dass
yarn twenty app:devläuft und dass Änderungen von Ihrer Umgebung nicht ignoriert werden.