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

Deseja contribuir em um Projeto Go?

Qual é o Projeto?

Se já trabalhou com com desenvolvimento web em Go, sabe que é padrão a substituição de grandes frameworks por um conjunto específico de bibliotecas que atendam as necessidades do projeto. É uma abordagem eficiente para criar servidores enxutos e simples. Porém ao desenvolver apps grandes aplicando arquiteturas como DDD, e padrões como SOLID, este tipo de abordagem se torna um pesadelo no início dos projetos.

Nos últimos dias tenho trabalhado em um projeto chamado: go-web-templates. O que no futuro deve ser um conjunto de templates agnósticos a Framework para desenvolvimento Web em Go. A ideia é criar uma variedade de projetos prontos para modificação e que possam utilizar qualquer biblioteca que o usuário escolha.

O que você precisa saber para contribuir:

É necessário apenas conhecer a biblioteca Fx de injeção de dependências e ter um bom conhecimento sobre arquitetura de projetos Web.

Não sabe nenhuma das duas coisas? É uma ótima oportunidade de aprender! Eu irei avaliar todas as contribuições, e posso lhe ajudar a continuar contribuindo mesmo que alguma alteração feita por você não entre no repositório de primeira.

Basta realizar o fork do repositótio e enviar um pull request para contribuir.

Qual o status atual?

Neste exato momento estou definindo um template para Grandes monólitos (apis e webapps). A ideia inicial é definir componentes escaláveis e a arquitetura desse tipo de projeto. Uma vez que este tipo esteja definido, vamos derivar projetos de escala menor.

Atualmente temos um projeto REST e uma Webapp, no futuro também serão adicionados projetos Graphql e GRPC.

Com o que pode contribuir agora?

Estes são as mudanças necessárias no momento:

  • Reorganizar os controladores diminuindo o código necessário em cada endpoint.
  • Adicionar uma solução geral para middlewares globais, adicionando middlewares de render de erros na Webapp.
  • Organizar o repositório para múltiplos templates.
  • Adicionar os Projetos GRPC e Graphql.

Objetivos futuros:

  • Adicionar novos templates com outros frameworks web e ORM's.
  • Criar um cli para gerar os templates automaticamente.

Como ajudar mesmo sem enviar código?

Comente ou Compartilhe essa publicação com seus amigos Dev Go, ou que já conhecem desenvolvimento Web e desejam aprender Go. Muitos deles precisam apenas de novos projetos em seu portfólio, e este projeto precisa apenas de contribuidores.

Carregando publicação patrocinada...
2
0
1
1

Ótima ideia, obrigado. Acho que vou criar uma conta específica para manter cada template em um repositório separado e dar algum jeito de gerenciar a padronização entre eles.

1

Muito legal o repo, eu que venho do dotnet sempre trabalhei com DDD e quando cai no universo do Go fiquei muito incomodado com a falta de padrao que encontrei na internet.

Hoje eu uso a entrutura que me parece ser a mais padrao (me baseei nesse outro repo):

  • pkg
  • internal

Dentro da internal eu tenho apps e pkgs onde apps sao os projetos em si, na msm pegada de monorepo, muito util pra fazer builds de aplicacaoes diferentes usando o msm codebase, por exemplo, API e Worker (ou Cron). E dentro de pkg eu tenho as outras coisas que vao ser usadas e compartilhadas por esses projetos dentro de apps.

Eu ainda to no processo, mas ate que to gostando dessa estrutura, eu entendi que faz parte do Go ter uma estrutura de pastas mais simples, diferente do dotnet...

Quando eu tentava implementar DDD no Go, acabava topando num problema chatinho, que era a nomeclatura dos packages, algumas vezes eu tinha packages com o msm nome por conta da estrutura de arquivos, e por isso, precisava renomear, normalmente pra um nome que acabava ficando maior (outra coisas que a comunidade do Go tenta evitar).

Enfim, novamente, parabens pela iniciativa, eu particularmente gosto de tecnologias que induzem um certo padrao de organizacao, nao eh o caso do Go, por isso curti sua iniciativa.

1

Foi por ter entrado em contato com a plataforma dotnet que tomei essa iniciativa. É muito simples de escrever apps robustos com o Aspnet core, gostaria de trazer um pouco desse mundo para Go. Mas respeitando os costumes já cultivados pela comunidade.

Sua visão como programador dotnet faria muito bem ao projeto. Se tiver um tempinho livre considere dar uma força lá. Mas desde já agradeço comentar.