Executando verificação de segurança...
0

CRIEI uma nova forma de criar APIs! [não é framework] (defina mais e programe menos)

Tomato-X

Tomato-X é um backend experimental em Node.js que propõe um jeito novo de criar APIs.
Em vez de escrever rotas, controllers e handlers diretamente em código, você define toda a estrutura da API com arquivos JSON organizados em pastas.

O sistema percorre automaticamente um diretório de rotas, encontra arquivos index.json, valida o conteúdo e transforma cada configuração em uma rota HTTP funcional. Essa abordagem torna o projeto declarativo, previsível e fácil de modificar: você altera endpoints simplesmente modificando JSONs, sem tocar na lógica principal do servidor.

A ideia central é tratar rotas como dados, não como código. Isso abre portas para:

prototipação rápida de APIs,

experimentos com arquitetura de backend,

geração automática de APIs a partir de estrutura de pastas,

e padrões comunitários reutilizáveis.

Este projeto não busca substituir soluções como Express ou Fastify em produção, mas é um laboratório de ideias para pensar diferente sobre organização de backends.

O que são Distros

As distros são o coração do Tomato-X.
Elas funcionam como módulos comportamentais que introduzem ações reutilizáveis, tipos, respostas e formas de tratar erros.

Em vez de escrever lógica diretamente dentro das rotas, o arquivo JSON de cada rota referencia um identificador de distro seguido da ação que será executada. Isso permite:

padrão consistente entre projetos: rotas que usam a mesma distro executam o mesmo comportamento, sem duplicação de código;

compartilhamento comunitário: qualquer desenvolvedor pode criar e publicar uma distro com ações prontas (como conexão com banco, validações, respostas específicas, etc);

extensibilidade: novas distros podem adicionar tipos de dados, métodos de resposta ou integrações com serviços externos;

separação entre estrutura e lógica: o JSON descreve “o que” acontece, a distro descreve “como” acontece.

Uma rota típica com referência a distros ficaria assim:

{
  "base": "generic:action_responsetxt",
  "method": "GET",
  "status": 200,
  "response": "generic:response_responsetxt",
  "catch_response": "generic:catch_response_responsetxt"
 }

Nesse exemplo, a rota não contém código — ela aponta para uma ação (action_responsetxt) que pertence à distro generic.
A distro sabe como executar essa ação, como formatar a resposta e como lidar com erros.

Estrutura de rotas

Cada pasta dentro do diretório de rotas representa uma rota. Dentro dela existe um arquivo index.json que descreve como essa rota deve funcionar — incluindo método HTTP, status de resposta e qual ação será executada.

Por exemplo, você pode criar uma rota simples que responda:

GET /love-tomatos

e retorne o texto:

I love tomatos

apenas criando uma pasta e um arquivo JSON com essas informações.

Antes de qualquer rota ser ativada, o sistema verifica se o JSON está bem formado, se os métodos e status são válidos e se as distros referenciadas existem. Se há qualquer problema, o servidor não sobe — isso evita bugs silenciosos em produção.

Por que isso importa

Tomato-X é uma exploração de API declarativa e backend orientado a estrutura, não a código. Ele explora:

como separar completamente estrutura e execução,

como padronizar comportamento usando módulos (distros),

como validar configurações antes da execução,

como organizar backends de forma simples e legível.

Ele abre espaço para evoluções como:

middlewares declarativos,

gerenciamento de versões de rotas,

geração automática de documentação,

integração com ferramentas de design de API.

Contribua e siga o projeto

Tomato-X é experimental, aberto e pronto para ser explorado.
Se você curte ideias sobre arquitetura de software, APIs declarativas ou padrões modulares, dê uma olhada no código e participe:

👉 https://github.com/Nicolas-Asafe/tomato-x

Explore as distros existentes, proponha novas ações ou crie sua própria distro para compartilhar com a comunidade. A proposta aqui é pensar diferente sobre backend e construir algo novo juntos.

Carregando publicação patrocinada...
1