- Definisci oggetti e campi personalizzati come codice (modello dati gestito)
- Crea funzioni logiche con trigger personalizzati (route HTTP, cron, eventi del database)
- Definisci le abilità per gli agenti IA
- Crea componenti front-end che vengono renderizzati all’interno della UI di Twenty
- Distribuisci la stessa app su più spazi di lavoro
Prerequisiti
- Node.js 24+ e Yarn 4
- Uno spazio di lavoro Twenty e una chiave API (creane una su https://app.twenty.com/settings/api-webhooks)
Per iniziare
Crea una nuova app utilizzando lo scaffolder ufficiale, quindi autenticati e inizia a sviluppare:Struttura del progetto (generata dallo scaffolder)
Quando eseguinpx create-twenty-app@latest my-twenty-app, lo scaffolder:
- Copia un’applicazione base minimale in
my-twenty-app/ - Aggiunge una dipendenza locale
twenty-sdke la configurazione di Yarn 4 - Crea file di configurazione e script collegati alla CLI
twenty - Genera i file principali (configurazione dell’applicazione, ruolo predefinito per le funzioni logiche, funzioni di pre-installazione e post-installazione) più i file di esempio in base alla modalità di scaffolding
--exhaustive si presenta così:
--minimal, vengono creati solo i file principali (application-config.ts, roles/default-role.ts, logic-functions/pre-install.ts e logic-functions/post-install.ts).
A livello generale:
- package.json: Dichiara il nome dell’app, la versione, i motori (Node 24+, Yarn 4) e aggiunge
twenty-sdkpiù uno scripttwentyche delega alla CLI localetwenty. Eseguiyarn twenty helpper elencare tutti i comandi disponibili. - .gitignore: Ignora i file generati comuni come
node_modules,.yarn,generated/(client tipizzato),dist/,build/, cartelle di coverage, file di log e file.env*. - yarn.lock, .yarnrc.yml, .yarn/: Bloccano e configurano la toolchain Yarn 4 utilizzata dal progetto.
- .nvmrc: Fissa la versione di Node.js prevista dal progetto.
- .oxlintrc.json e tsconfig.json: Forniscono linting e configurazione TypeScript per i sorgenti TypeScript della tua app.
- README.md: Un breve README nella radice dell’app con istruzioni di base.
- public/: Una cartella per archiviare risorse pubbliche (immagini, font, file statici) che saranno servite con la tua applicazione. I file collocati qui vengono caricati durante la sincronizzazione e sono accessibili in fase di esecuzione.
- src/: Il luogo principale in cui definisci la tua applicazione come codice
Rilevamento delle entità
L’SDK rileva le entità analizzando i tuoi file TypeScript alla ricerca di chiamateexport default define<Entity>({...}). Ogni tipo di entità ha una corrispondente funzione helper esportata da twenty-sdk:
| Funzione helper | Tipo di entità |
|---|---|
defineObject | Definizioni di oggetti personalizzati |
defineLogicFunction | Definizioni di funzioni logiche |
definePreInstallLogicFunction | Funzione logica di pre-installazione (viene eseguita prima dell’installazione) |
definePostInstallLogicFunction | Funzione logica di post-installazione (viene eseguita dopo l’installazione) |
defineFrontComponent | Definizioni dei componenti front-end |
defineRole | Definizioni di ruoli |
defineField | Estensioni di campo per oggetti esistenti |
defineView | Definizioni di viste salvate |
defineNavigationMenuItem | Definizioni delle voci del menu di navigazione |
defineSkill | Definizioni delle competenze degli agenti IA |
La denominazione dei file è flessibile. Il rilevamento delle entità è basato sull’AST — l’SDK esegue la scansione dei file sorgente alla ricerca del pattern
export default define<Entity>({...}). Puoi organizzare file e cartelle come preferisci. Raggruppare per tipo di entità (ad es., logic-functions/, roles/) è solo una convenzione per l’organizzazione del codice, non un requisito.yarn twenty app:devgenererà automaticamente due client API tipizzati innode_modules/twenty-sdk/generated:CoreApiClient(per i dati dell’area di lavoro tramite/graphql) eMetadataApiClient(per la configurazione dell’area di lavoro e il caricamento di file tramite/metadata).yarn twenty entity:addaggiungerà file di definizione delle entità sottosrc/per i tuoi oggetti, funzioni, componenti front-end, ruoli, competenze e altro ancora.
Autenticazione
La prima volta che eseguiyarn twenty auth:login, ti verranno richiesti:
- URL dell’API (predefinito a http://localhost:3000 o al profilo dello spazio di lavoro corrente)
- Chiave API
~/.twenty/config.json. Puoi mantenere più profili e passare da uno all’altro.
Gestione delle aree di lavoro
yarn twenty auth:switch, tutti i comandi successivi utilizzeranno quell’area di lavoro per impostazione predefinita. Puoi comunque sovrascriverla temporaneamente con --workspace <name>.
Configurazione manuale (senza lo scaffolder)
Sebbene consigliamo di utilizzarecreate-twenty-app per la migliore esperienza iniziale, puoi anche configurare un progetto manualmente. Non installare la CLI globalmente. Invece, aggiungi twenty-sdk come dipendenza locale e collega un unico script nel tuo package.json:
twenty:
yarn twenty <command>, ad es. yarn twenty app:dev, yarn twenty help, ecc.
Risoluzione dei problemi
- Errori di autenticazione: esegui
yarn twenty auth:logine assicurati che la tua chiave API abbia i permessi richiesti. - Impossibile connettersi al server: verifica l’URL dell’API e che il server Twenty sia raggiungibile.
- Tipi o client mancanti/obsoleti: riavvia
yarn twenty app:dev— genera automaticamente il client tipizzato. - Modalità di sviluppo non sincronizzata: assicurati che
yarn twenty app:devsia in esecuzione e che le modifiche non vengano ignorate dal tuo ambiente.