Stacks compatíveis
Três tipos de leitor. O tree-sitter converte o código em uma árvore sintática e reconhece formas nela, então acompanha constantes, template strings e ternários. Os adaptadores regex leem o texto do código com padrões escritos para cada framework: rápidos de adicionar, exatos nas formas comuns, cegos para as incomuns. Arquivos de proxy e de gateway são lidos como config. A página de cada repositório diz qual deles rodou e o que ele não conseguiu ler.
| Stack | Leitor | Rotas | Chamadas HTTP | Modelos | Filas | Autenticação nas rotas | Dependências e alertas de segurança | Chaves de ambiente |
|---|---|---|---|---|---|---|---|---|
| Node · Express, Fastify, Next.js API | tree-sitter | ● incl. rotas por arquivo | ● | ● Mongoose | ● amqplib, cron, Socket.io | ● middleware | ● npm audit, OSV | ● |
| Vue, React, Next.js (código do navegador) | tree-sitter | – | ● axios, fetch, request, $http, $.ajax, actions da store | – | ◐ cliente Socket.io | – | ● | ● |
| Flutter · Dart | regex | – | ● Dio, http | – | – | – | ● pub.dev, OSV | – |
| Java, Kotlin · Spring Boot, Quarkus, Jakarta EE | regex | ● MVC, WebFlux, Data REST, JAX-RS, especificações OpenAPI | ● RestTemplate, WebClient, RestClient, Feign, clientes REST, HttpClient do Apache e do Java 11 | ● JPA, Mongo | ● Rabbit, Kafka, JMS | ◐ anotações nos métodos | ● Maven, Gradle, OSV | ● |
| Python · FastAPI | regex | ● com prefixos de router | ● requests, httpx, urllib, decorators de gateway | ● SQLModel, SQLAlchemy | ● pika, Kafka | ● dependências | ● PyPI, OSV | ● incl. BaseSettings |
| Python · Django, DRF | regex | ● urls.py aninhados, routers | ● | ● ORM | ● | ◐ mixins, permission_classes | ● | ● |
| Python · Flask | regex | ● blueprints | ● | ● SQLAlchemy | ● | ◐ decorators | ● | ● |
| Go · mux, gin, chi, net/http | regex | ● | ● net/http | ◐ structs com tags | ● amqp, NATS, kafka-go | – | ● go.mod, OSV | ● |
| C# · ASP.NET Core | regex | ● controllers, minimal APIs | ● HttpClient, Refit, YARP, forwarders | – | – | ◐ [Authorize] | – | ● incl. appsettings |
| Rust · actix-web, axum, rocket | regex | ● | ● reqwest | – | – | – | – | ● |
| PHP · Symfony, Laravel, Slim | regex | ● | ● curl, Guzzle, Http | – | – | – | – | ● |
| Ruby · Sinatra, Rails | regex | ● | ● Net::HTTP, HTTParty, Faraday | – | – | – | – | ● |
| Proxies · nginx, Envoy, Spring Cloud Gateway, Zuul | config | ● cada regra | ● o salto que cada chamada faz | – | – | – | – | – |
| Rotas NestJS, GraphQL, métodos gRPC | Os próximos, conforme a demanda. Até lá, as conexões são desenhadas (padrões de mensagem, stubs gRPC por serviço do proto) sem a rota de cada chamada. | |||||||
● lido◐ parcial– não se aplica ou ainda não
Em todas as stacks
- Ligação. Uma chamada chega a um repositório por um host declarado, por um hostname que é o nome da aplicação ou do serviço do compose do outro repositório, por uma porta em localhost ou por uma conexão que você declara. Cada ligação carrega a sua evidência: config, inferida, declarada.
- Correspondência. Os caminhos são normalizados (
:id,{id}e<int:id>viram todos um curinga) e casados de forma exata, por padrão, ou sinalizados: método diferente, ambígua, sem rota, dinâmica. - URLs das chamadas. A URL de uma chamada é deduzida como faria uma pessoa lendo o código: constantes, leituras de variáveis de ambiente com os seus valores padrão, strings de formatação, os parâmetros do wrapper em que ela está, o endereço base com que um cliente é registrado, as regras do proxy na frente. Um valor de um arquivo .env pode escolher o destino, mas nunca sai da máquina.
- Git. Commits por semana, arquivos mais alterados dos últimos 90 dias, autores; funciona em um módulo dentro de um monorepo.
- Deploy. Portas do Dockerfile, serviços do compose, GitHub Actions, Jenkins e pipelines do Bitbucket.
- Documentação. As pastas de Markdown que você indica são lidas onde estão e ligadas aos repositórios e às rotas que elas mencionam.
Peça uma stack
Escreva para support@kuuhaku.dev ou use a caixa de feedback no produto, com um repositório público que mostre o formato. Um adaptador regex para um framework leva dias, não meses.