Gonthera CLI docs
v{{ currentVersion }}
Versão 2.1.0 disponível

Backends consistentes. Menos repetição.

Do contrato ao backend,
em um comando.

O Gonthera CLI transforma contratos JSON em estruturas completas para Java, .NET e Node.js — com CRUD, persistência, endpoints, autorização e mensageria.

Terminal
$ mvn gonthera-cli:generate-sources
01

Um contrato

Entidades, relacionamentos, endpoints e enums em JSON legível.

02

Três ecossistemas

Java + Spring, C# + .NET e TypeScript + Express + Prisma.

03

Saída previsível

Código organizado, regenerável e pronto para especialização.

01 — Comece aqui

Primeiros passos

Crie o contrato, valide e gere. O diretório atual deve ser a raiz que contém a pasta .gonthera.

1

Adicione o plugin

Para projetos Java, fixe a versão no pom.xml.

2

Crie a configuração

Separe as áreas do contrato dentro de .gonthera.

3

Valide e gere

Validação não cria nem remove arquivos gerados.

02 — Fundação

Configuração modular

O project.json identifica o serviço. Os arquivos separados sobrescrevem somente suas respectivas seções.

Ordem de resolução
  1. .gonthera/project.json e arquivos separados
  2. project.json na raiz
  3. properties.json legado

Contrato mínimo

Use a linguagem em maiúsculas: JAVA, DOTNET ou NODE.

{{ property.name }}{{ property.required ? 'obrigatório' : 'opcional' }}

{{ property.description }}

03 — Domínio

Entidades e campos

Cada entidade persistida precisa de exatamente uma chave primária e metadados completos.

J

JavaSuporte completo

Gera entidades JPA, DTOs, converters, repositories, services e controllers.

.N

.NETSuporte completo

Gera entidades C#, DTOs, converters, repositories e controllers para Entity Framework Core.

N

Node.jsSuporte disponível

Gera models TypeScript, repositories, controllers, rotas e models Prisma para campos escalares.

04 — Modelo

Relacionamentos sem ambiguidade

O lado dono guarda a FK. O inverso aponta para ele com mappedBy.

Lado dono

customer

bidirectional: falsereference: true

Gera coluna, FK e @JoinColumn.

ManyToOnemappedBy: customer
Lado inverso

orders

bidirectional: truelist: true

Não gera coluna adicional.

J

JavaSuporte completo

Relacionamentos JPA funcionam com lado dono, lado inverso, mappedBy, converters e geração de FK.

.N

.NETSuporte completo

Relacionamentos são gerados para as entidades e o Entity Framework Core, incluindo suas referências e coleções.

N

Node.jsEm melhoria

Relações simples servem como base inicial. Autorrelacionamentos, relações bidirecionais e ManyToMany ainda precisam de revisão antes das migrations.

05 — HTTP

Endpoints customizados

Complemente o CRUD com contratos de entrada, saída e autorização explícitos.

J

JavaSuporte completo

Gera interface, contratos de entrada e saída e aplica @Anonymous quando solicitado.

.N

.NETSuporte completo

Agrupa métodos por grouper e aplica [AllowAnonymous] quando solicitado.

N

Node.jsSuporte disponível

Gera contratos TypeScript e rotas Express. A autorização integrada ainda depende da infraestrutura do consumidor.

06 — Segurança

Autorização por tecnologia

A versão 2.1.0 entrega uma infraestrutura própria e pronta para customização no código Java gerado.

J

JavaSuporte completo

Gera autenticação JWT, permissões, annotations, configuração de tenant e contexto da requisição.

.N

.NETEm melhoria

A geração ainda não oferece o mesmo conjunto próprio de autenticação, tenant e permissões disponível no Java.

N

Node.jsEm melhoria

A geração ainda não oferece o mesmo conjunto próprio de autenticação, tenant e permissões disponível no Java.

_gen/authorization/

  • exception/ServiceException.java
  • permission/PermissionType.java
  • security/Authenticate.java
  • security/UserSupplier.java
  • stereotype/Anonymous.java
  • tenant/TenantConfiguration.java
  • tenant/TenantContext.java

Configuração opcional

Por padrão, os componentes são concretos. Ative os flags somente quando o consumidor fornecer beans concretos fora de _gen.

01

JWT 0.11.5

Adicione jjwt-api, jjwt-impl e jjwt-jackson ao consumidor.

02

SECRET_JWT

O comportamento padrão lê uma chave HMAC dessa variável de ambiente.

03

ThreadLocal seguro

Execute TenantContext.clear() em finally ao terminar a requisição.

Hooks disponíveis em Authenticate +
resolveSecret()extractToken(header)parseClaims(token, secret)createUser(claims)validateUser(user)createToken(user, secret)

07 — Saídas

Escolha seu ecossistema

O contrato é compartilhado, mas cada linguagem recebe uma arquitetura adequada ao seu runtime.

{{ lang.kicker }}

{{ lang.title }}

{{ lang.description }}

  • {{ item }}

08 — Mensageria

RabbitMQ quando você precisar

Nenhuma classe ou dependência é gerada quando RabbitMq está ausente, nulo ou vazio.

J

JavaSuporte completo

Gera configuração Spring AMQP, publishers e subscribers. A exchange é definida com @RabbitExchange.

.N

.NETSuporte completo

Gera configuração para DI, publishers, subscribers e o atributo [RabbitExchange].

N

Node.jsSuporte disponível

Gera configuração, publishers e subscribers TypeScript usando amqplib.

09 — Consultas

Filtros por linguagem

Os dialetos ainda não possuem paridade. Use somente as operações seguras de cada alvo.

AlvoSuporte seguroLimitações importantes
Javaeq, isNull, notNull, and, or e caminhos com ponto.Não misture and/or. Números, datas e booleanos não são seguros.
.NETeq e um único operador lógico por expressão.Coleções usam *. É um dialeto diferente do Java.
NodePaginação com size e offset.O filtro atual é ignorado pelo repository gerado.

offset começa em 1 na requisição Java. displayFields controla a projeção do DTO, não filtra registros.

10 — Upgrade

Migração para 2.1.0

Regere e compile o consumidor depois de concluir todos os passos.

  1. {{ String(index + 1).padStart(2, '0') }}

Pronto para gerar?

Baixe o Gonthera CLI

Use o executável no Windows ou o JAR multiplataforma. Os dois artefatos correspondem à mesma versão.

Versão {{ currentVersion }}23 jul 2026Java 11+ para a CLI
{{ artifact.icon }}{{ artifact.platform }}{{ artifact.name }}{{ artifact.size }}

{{ artifact.name }}{{ artifact.sha }}

G

Gonthera CLIDocumentação oficial

Feito para gerar menos repetição e mais consistência.

Voltar ao topo ↑