Esta aplicação é composta por um frontend em Angular e um backend em .NET Web API, utilizando Domain-Driven Design (DDD), clean code e clean architecture, e testes de unidade em cada camada para garantir a qualidade do código.
ATENÇÃO: o projeto foi criado no Visual Studio, e a visualização correta da estrutura de pastas/camadas só será possível caso o Visual Studio esteja sendo utilizado, conforme imagem abaixo.
-
frontend: Contém o código do frontend em Angular.
src
: Código fonte do Angular.Dockerfile
: Dockerfile para construir a imagem do frontend.
-
backend: Contém o código do backend em .NET, dividido em 4 camadas:
Api
: Código da API Web.Application
: Lógica de aplicação.Domain
: Entidades e lógica de domínio.Infrastructure
: Configurações e repositórios de infraestrutura.- Testes para cada camada da aplicação.
-
banco de dados: Foi utilizado SQL Server para a persistência dos dados
-
docker-compose: Arquivos de configuração do Docker Compose.
docker-compose.yml
: Arquivo principal para orquestrar os serviços do Docker.
- Docker e Docker Compose instalados na máquina.
-
Clone o repositório
git clone https://github.com/GabrielWeissReis/ToDoList-Docker.git cd ToDoList-Docker
-
Contrua e inicie os contêineres
Execute o comando abaixo na raiz do projeto onde está localizado o arquivo docker-compose.yml:
docker-compose up --build
- Acesse a aplicação
Frontend: http://localhost:4200
Backend: http://localhost:8080/swagger/index.html
Testes
: adicionar maior cobertura de testes.API Gateway
: adicionar API Gateway, por exemplo Ocelot, para termos um ponto de entrada único de requisições para a API e eventuais futuros microsserviços de backend.Docker Hub Container Image Library
: adicionar as imagens ao Docker Hub para agilizar o tempo de download.Prometheus/Grafana
: para coletar/armazenar métricas e criar deshboards interativos.Redis
: para armazenamento de dados em memória no estilo chave-valor, oferecendo acesso rápido aos dados frequentemente utilizados pela aplicação, reduzindo a necessidade de consultas ao banco de dados e melhorando o desempenho geral.