Pitch: Estou construindo um framework HTTP em TypeScript para Bun
Olá, pessoal.
Estou desenvolvendo o Empilha (https://github.com/empilhajs/empilha), um framework HTTP em TypeScript voltado para aplicações Bun.
O projeto começou como um estudo pessoal, mas acabou crescendo e hoje já possui alguns recursos que gostaria de compartilhar:
- decorators para controllers e rotas;
- injeção de dependências;
- validação de requisições e respostas;
- autenticação e autorização;
- integração com PostgreSQL;
- suporte a JWT;
- geração de OpenAPI;
- health checks;
- tarefas em background;
- controle de timeout, cancelamento e shutdown.
A documentação está disponível em:
https://empilhajs.github.io/empilha-docs/
Algumas decisões do projeto
O Empilha é bastante inspirado no Spring Boot. Gosto da forma como ele organiza aplicações, trabalha com injeção de dependências, configuração, controllers, ciclo de vida e convenções.
Ao mesmo tempo, tentei adaptar essas ideias ao ecossistema do Bun e do TypeScript, mantendo uma proposta mais enxuta.
Uma decisão importante foi não criar uma camada de ORM. Em vez disso, o framework trabalha diretamente com SQL parametrizado.
Fiz essa escolha por alguns motivos:
- o SQL continua explícito e fácil de revisar;
- evita esconder consultas atrás de abstrações complexas;
- facilita o uso de recursos específicos do PostgreSQL;
- torna mais claro o impacto de uma query no banco;
- combina bem com as ferramentas atuais de assistência por IA.
Hoje, ferramentas de IA conseguem ajudar bastante na criação, explicação e revisão de SQL. Isso não significa que uma query gerada por IA deva ser aceita sem revisão, mas reduz a necessidade de uma camada de ORM apenas para evitar a escrita manual das consultas.
A proposta não é dizer que ORM é ruim. É apenas uma escolha diferente: deixar o framework cuidar da parte HTTP, autenticação, validação, injeção de dependências e ciclo de vida, enquanto o SQL continua sob controle direto da aplicação.
Estado atual
O projeto ainda está no começo e não quero apresentá-lo como uma solução pronta ou madura.
Atualmente, a documentação e algumas mensagens do código ainda não estão internacionalizadas — muitas partes estão em português e provavelmente existem
decisões de API que ainda precisam ser revistas.
Publiquei recentemente a versão 0.1.2 do pacote principal no npm:
- empilha (https://www.npmjs.com/package/empilha)
Os pacotes de integração estão na versão 0.1.1:
- @empilha/pg (https://www.npmjs.com/package/@empilha/pg)
- @empilha/jwt (https://www.npmjs.com/package/@empilha/jwt)
Estou compartilhando o projeto para receber opiniões, críticas e sugestões de quem trabalha com TypeScript, Bun, PostgreSQL ou desenvolvimento de frameworks.
Se você puder dar uma olhada no repositório, deixar uma estrela ou apontar algo que poderia melhorar, já será uma grande ajuda. Quero entender se o projeto faz sentido para outras pessoas e quais partes deveriam ser priorizadas daqui para frente.
Obrigado pela leitura!