13 pontos por narubrown 2026-01-18 | 2 comentários | Compartilhar no WhatsApp
  • Spine é um framework web backend baseado em Go que expõe explicitamente o fluxo de execução, sem escondê-lo
  • Um único Pipeline controla toda a ordem de execução, e o Controller foca apenas na lógica de negócio
  • A assinatura do método é o próprio contrato da API, sem automação baseada em anotações ou convenções
  • A ordem das requisições fica claramente visível no código
  • O foco está menos na produtividade inicial e mais na manutenibilidade de longo prazo e na facilidade de rastrear o fluxo de execução
  • Usa o Echo como HTTP Transport e tem um design independente de ORM, permitindo escolher livremente entre Bun, GORM etc.

Visão geral do Spine

Spine é um framework que tem como objetivo expor explicitamente o fluxo de execução de requisições web
Enquanto a maioria dos frameworks esconde a ordem de execução em nome da conveniência, o Spine a fixa na estrutura do código
Ele é orientado a uma estrutura capaz de responder com clareza: “onde a requisição começa, quem a processa e em que ordem tudo é executado”

Princípios de design

Política sem mágica

  • O Pipeline é o único componente que conhece a ordem de execução
  • Comportamentos que “fazem tudo sozinhos” são minimizados
  • Toda extensão e execução é registrada explicitamente e segue uma ordem previsível

Contrato baseado em assinatura

  • A assinatura do método é o próprio contrato da API
  • A criação de entradas fica a cargo do ArgumentResolver, e o tratamento das saídas fica com o ReturnValueHandler
  • Mapeamento baseado em anotações e inferência automática baseada em convenções são proibidos

Independência do Controller

  • O Controller não depende de tipos HTTP/Transport
  • Usa apenas tipos semânticos como path., query. e httperr.*
  • Ele não conhece o modelo de execução, mas a origem das entradas é explicitada por tipo

Principais recursos

Roteamento e parâmetros

  • Suporte a Path Parameter (binding baseado em ordem)
  • Utilitário Query Values (parsing de Int, String e Boolean)
  • Binding automático de Body DTO

Tratamento de respostas

  • Conversão automática de struct -> JSON com ReturnValueHandler
  • Mapeamento automático de error -> código de status HTTP
  • Tipos de erro semânticos como httperr.NotFound e BadRequest

Interesses transversais

  • Interceptor (PreHandle, PostHandle, AfterCompletion)
  • CORS Interceptor embutido
  • IoC Container baseado em construtor

Arquitetura

  • Separação da camada de Transport (atualmente Echo, com design pensado para substituição)
  • Design independente de ORM (Bun, GORM etc. podem ser usados livremente ⚠️ no momento, a compatibilidade foi verificada apenas com Bun)

Pontos fortes em ambientes de grande escala

Como existe apenas um responsável por conhecer a ordem de execução, o custo de rastrear o fluxo de requisições é reduzido
Interesses transversais como logging, transações e segurança são posicionados apenas no Pipeline, tornando previsíveis o ponto de aplicação e o momento de execução; a estratégia é abrir mão de parte da produtividade inicial para absorver, por meio da estrutura, a complexidade que cresce no longo prazo

O que o Spine não é

  • Não é um substituto para Spring/NestJS
  • Não é um framework voltado à máxima produtividade
  • Não é um framework de automação baseado em anotações
  • Não é um framework centrado em HTTP Engine ou Router

Um projeto em que o Spine ainda precisa de ajuda

O Spine ainda não é um framework finalizado e foi publicado intencionalmente com muitas partes ainda inacabadas
É preciso validar se a estrutura é suficientemente explicável e se o modelo de execução realmente revela bem os problemas do mundo real

Como participar

  • Dê uma ⭐️ no GitHub para acompanhar o projeto
  • Experimente e deixe suas impressões ou dúvidas em uma issue
  • Deixe críticas, sugestões ou perguntas sobre o design nos comentários

Links de referência

2 comentários

 
bsh998 2026-01-20

Se vocês ajustarem um pouco a descrição gerada por IA para ficar mais natural, acho que a credibilidade pode aumentar.

 
narubrown 2026-01-20

Olá, muito obrigado pelo feedback.
Você quer dizer que parece IA no texto do GeekNews?

Achei que aqui era para escrever assim mesmo ^^… Como os outros textos também eram assim, escrevi de propósito desse jeito.

https://spine.na2ru2.me/ko/
Além disso, também criei um site onde é possível aprender spine.
Se tiver interesse, dê uma olhada também. Obrigado.