Estou criando um framework para Bun inspirado em Spring Boot/NestJS. Esse tipo de abordagem faz sentido?
Fala pessoal,
Venho bastante do ecossistema Java e sempre gostei do estilo de trabalho do Spring Boot: DI, controllers, services, repositories, estrutura previsível e uma separação mais clara das responsabilidades no backend.
Ao mesmo tempo, também gosto bastante da experiência do NestJS no TypeScript. Só que usando Bun eu sentia falta de algo nessa linha que fosse realmente pensado para Bun desde o começo, e não uma adaptação de algo Node-first.
Por isso, nos últimos dois anos venho criando um framework para Bun + TypeScript para usar nos meus próprios projetos pessoais. A ideia foi juntar um pouco dessa organização do Spring Boot/NestJS com a performance e simplicidade do Bun.
Hoje ele tem core HTTP feito para Bun, controllers com decorators, dependency injection, middleware, validação com DTOs, lifecycle hooks, sistema modular/plugin-based, WebSocket, scheduler, queue com BullMQ, static files, logger e algumas utilities para testes.
Uma das partes em que mais trabalhei foi o ORM. Ele suporta PostgreSQL e MySQL, não usa Knex por baixo e nem depende de outro query builder externo. A camada de query builder/mapeamento foi feita do zero.
Ele tem repository pattern, active record opcional, migrations, relations, transactions, identity map, cache, optimistic locking, bulk operations e read replicas.
Também adicionei algumas ideias inspiradas em Spring Data, como derived query methods:
findByEmail(...)
findAllByStatusAndActive(...)
existsByEmail(...)
findTop5ByStatusOrderByCreatedAtDesc(...)
Não é uma tentativa de copiar Spring Boot inteiro para TypeScript, nem de substituir o estilo mais minimalista que muita gente gosta no Bun. É mais uma tentativa de criar uma opção para quem gosta de backend mais estruturado, com DI, módulos e uma camada de persistência mais integrada.
Eu já uso esse framework em produção em alguns projetos meus, mas ainda estou tentando entender se esse estilo faz sentido para mais pessoas no ecossistema Bun.
Para quem usa Bun em backend: vocês sentem falta de algo mais opinionated/estruturado, tipo Spring Boot ou NestJS, ou preferem manter tudo mais minimalista?
Também estou aberto a feedback sobre API, arquitetura, documentação e DX. Se alguém tiver interesse em testar ou colaborar, posso mandar o repositório nos comentários.