- Defina objetos e campos personalizados como código (modelo de dados gerenciado)
- Crie funções de lógica com gatilhos personalizados (rotas HTTP, cron, eventos de banco de dados)
- Defina habilidades para agentes de IA
- Crie componentes de front-end que renderizam dentro da UI do Twenty
- Implemente o mesmo aplicativo em vários espaços de trabalho
Pré-requisitos
- Node.js 24+ e Yarn 4
- Um espaço de trabalho do Twenty e uma chave de API (crie uma em https://app.twenty.com/settings/api-webhooks)
Primeiros passos
Crie um novo aplicativo usando o gerador oficial, depois autentique-se e comece a desenvolver:Estrutura do projeto (com scaffold)
Ao executarnpx create-twenty-app@latest my-twenty-app, o gerador:
- Copia um aplicativo base mínimo para
my-twenty-app/ - Adiciona uma dependência local
twenty-sdke a configuração do Yarn 4 - Cria arquivos de configuração e scripts conectados à CLI
twenty - Gera arquivos principais (configuração da aplicação, papel padrão para funções de lógica, funções de pré-instalação e pós-instalação) além de arquivos de exemplo com base no modo de geração de estrutura
--exhaustive fica assim:
--minimal, apenas os arquivos principais são criados (application-config.ts, roles/default-role.ts, logic-functions/pre-install.ts e logic-functions/post-install.ts).
Em alto nível:
- package.json: Declara o nome do app, versão, engines (Node 24+, Yarn 4), e adiciona
twenty-sdkalém de um scripttwentyque delega para a CLItwentylocal. Executeyarn twenty helppara listar todos os comandos disponíveis. - .gitignore: Ignora artefatos comuns como
node_modules,.yarn,generated/(cliente tipado),dist/,build/, pastas de cobertura, arquivos de log e arquivos.env*. - yarn.lock, .yarnrc.yml, .yarn/: Bloqueiam e configuram a ferramenta Yarn 4 usada pelo projeto.
- .nvmrc: Fixa a versão do Node.js esperada pelo projeto.
- .oxlintrc.json e tsconfig.json: Fornecem lint e configuração do TypeScript para os fontes TypeScript do seu aplicativo.
- README.md: Um README curto na raiz do aplicativo com instruções básicas.
- public/: Uma pasta para armazenar recursos públicos (imagens, fontes, arquivos estáticos) que serão servidos com sua aplicação. Os arquivos colocados aqui são enviados durante a sincronização e ficam acessíveis em tempo de execução.
- src/: O local principal onde você define seu aplicativo como código
Detecção de entidades
O SDK detecta entidades analisando seus arquivos TypeScript em busca de chamadasexport default define<Entity>({...}). Cada tipo de entidade tem uma função utilitária correspondente exportada de twenty-sdk:
| Função utilitária | Tipo de entidade |
|---|---|
defineObject | Definições de objetos personalizados |
defineLogicFunction | Definições de funções de lógica |
definePreInstallLogicFunction | Função de lógica de pré-instalação (é executada antes da instalação) |
definePostInstallLogicFunction | Função de lógica de pós-instalação (é executada após a instalação) |
defineFrontComponent | Definições de componentes de front-end |
defineRole | Definições de papéis |
defineField | Extensões de campos para objetos existentes |
defineView | Definições de visualizações salvas |
defineNavigationMenuItem | Definições de itens do menu de navegação |
defineSkill | Definições de habilidades de agente de IA |
A nomeação de arquivos é flexível. A detecção de entidades é baseada em AST — o SDK varre seus arquivos fonte em busca do padrão
export default define<Entity>({...}). Você pode organizar seus arquivos e pastas como quiser. Agrupar por tipo de entidade (por exemplo, logic-functions/, roles/) é apenas uma convenção para organização do código, não um requisito.yarn twenty app:devirá gerar automaticamente dois clientes de API tipados emnode_modules/twenty-sdk/generated:CoreApiClient(para dados do espaço de trabalho via/graphql) eMetadataApiClient(para configuração do espaço de trabalho e envio de arquivos via/metadata).yarn twenty entity:addadicionará arquivos de definição de entidade emsrc/para seus objetos, funções, componentes de front-end, papéis e habilidades personalizados, entre outros.
Autenticação
Na primeira vez que você executaryarn twenty auth:login, será solicitado o seguinte:
- URL da API (padrão: http://localhost:3000 ou o perfil do seu espaço de trabalho atual)
- Chave de API
~/.twenty/config.json. Você pode manter vários perfis e alternar entre eles.
Gerenciando espaços de trabalho
yarn twenty auth:switch, todos os comandos subsequentes usarão esse espaço de trabalho por padrão. Você ainda pode substituí-lo temporariamente com --workspace <name>.
Configuração manual (sem o gerador)
Embora recomendemos usarcreate-twenty-app para a melhor experiência inicial, você também pode configurar um projeto manualmente. Não instale a CLI globalmente. Em vez disso, adicione twenty-sdk como uma dependência local e configure um único script no seu package.json:
twenty:
yarn twenty <command>, por exemplo, yarn twenty app:dev, yarn twenty help, etc.
Resolução de Problemas
- Erros de autenticação: execute
yarn twenty auth:logine certifique-se de que sua chave de API tenha as permissões necessárias. - Não é possível conectar ao servidor: verifique a URL da API e se o servidor do Twenty está acessível.
- Tipos ou cliente ausentes/desatualizados: reinicie
yarn twenty app:dev— ele gera automaticamente o cliente tipado. - Modo de desenvolvimento não sincronizando: certifique-se de que
yarn twenty app:devesteja em execução e de que as alterações não estejam sendo ignoradas pelo seu ambiente.