Este é um repositório de template para projetos .NET, projetado para fornecer uma base sólida e estruturada seguindo boas práticas de desenvolvimento e arquitetura.
Este repositório serve como um modelo. Ao iniciar um novo projeto a partir dele, é necessário realizar algumas configurações manuais para adequá-lo à sua nova solução.
Você deve renomear os arquivos e diretórios para corresponder ao nome do seu novo projeto. Isso inclui:
- O arquivo de solução (
Solution.slnx). - As pastas dos projetos dentro de
src/etests/(ex:Solution.Api,Solution.UnitTests). - Os arquivos
.csprojdentro dessas pastas.
Os arquivos de projeto (.csproj) contêm placeholders que precisam ser substituídos por valores reais.
- Abra os arquivos
.csproj(especialmente emsrc/Solution.Api). - Procure por valores entre chaves duplas, como
{{...}}. - Realize as substituições necessárias:
{{add-new-guid}}: Gere um novo GUID para oUserSecretsId.{{repository}}: Insira o nome do repositório Git do seu projeto.
Os arquivos de configuração do Docker também precisam ser atualizados para refletir o novo nome do projeto.
devops/docker-compose.yml:- Atualize o nome do serviço (ex:
solution-apiparaseuprojeto-api). - Atualize o nome da imagem (ex:
solution:localparaseuprojeto:local).
- Atualize o nome do serviço (ex:
devops/Dockerfile:- Atualize os caminhos de cópia (
COPY) que referenciamsrc/Solution.Api/Solution.Api.csproj. - Atualize o comando
RUN dotnet restore. - Atualize o
WORKDIRpara a nova pasta do projeto. - Atualize o
ENTRYPOINTpara o novo nome da DLL (ex:SeuProjeto.Api.dll).
- Atualize os caminhos de cópia (
Para rodar a aplicação utilizando Docker, execute o seguinte comando na raiz da solução:
docker compose -f .\devops\docker-compose.yml up --buildCaso deseje rodar em segundo plano (detached mode), adicione a flag -d:
docker compose -f .\devops\docker-compose.yml up --build -dO projeto segue uma organização baseada em Clean Architecture, dividida em:
src/: Código-fonte da aplicação.Solution.Api/: Projeto Web API, ponto de entrada da aplicação.Domain/: O núcleo da aplicação, contendo entidades e regras de negócio.Application/: Casos de uso e orquestração da lógica de aplicação.Infrastructure/: Implementações concretas (banco de dados, serviços externos).
tests/: Projetos de testes automatizados.Solution.UnitTests/: Testes de unidade para validar a lógica isolada.Solution.IntegrationTests/: Testes de integração para validar o funcionamento conjunto dos componentes.
devops/: Arquivos relacionados a CI/CD e infraestrutura..husky/: Hooks do Git para automação de tarefas de qualidade (linting, testes) antes de commits/pushes.
O objetivo deste template é acelerar o "setup" inicial de novos microsserviços ou aplicações .NET, garantindo que todos os projetos iniciem com:
- Uma arquitetura desacoplada e testável.
- Configurações de qualidade de código já estabelecidas.
- Padrões de observabilidade e resiliência pré-configurados (como visto nas dependências do projeto).
Feito com amor <3!