Esse projeto está sendo criado para gerenciar os usuários, permissões e roles do meu projeto de e-commerce que será construído no futuro.
-
Porquê decidiu fazer esse projeto?
- Para revizar os conceitos de clean architecture, aprender domain events e aprender a lidar com filas (RabbitMQ).
-
Quais foram os desafios de implementá-lo?
- Implementar a clean architecture e implementar os domain events, garantir que seriam enviados corretamente para a topic e posteriormente enviar para as queues interessadas.
-
O que eu aprendi com ele?
- Aprendi que é extremamente importante salvar os eventos que foram enviados para a topic, pois se o servidor cair, os eventos não serão perdidos e poderão ser enviados novamente para a topic, também aprendi que é importante ter uma fila para cada serviço, pois se um serviço cair, os outros serviços não serão afetados.
- Arquitetura
- Requsitos para rodar o projeto
- Instruções para executar o projeto
- Contribua com o projeto
- Changelog
Camadas da aplicação
Domain, é a camada onde se encontra as regras de negócio, validações e as interfaces gateways (abstração dos métodos do banco dedados, são usadas para remover o acomplamento com o banco de dados)
Application, é a camada que contem todos os casos de uso (criar um usuário, pegar um usuário pelo id, atualizar um usuário, deletar um usuário, esse é famoso CRUD) e contem a integração com o gateway do banco de dados
Infrastructure, é a camada responsável por conectar tudo, o usuário com a application e domain layer, contem a conexão com o banco de dados, entidades do banco e as rotas
- Docker e docker-compose
- Java e JDK 17
- Baixe a aplicação e instale as dependências:
# Baixando o projeto e acessando o diretorio
git clone https://github.com/Kaua3045/ecommerce-users.git cd ecommerce-users
# Baixando as dependências
./gradlew dependencies
-
Antes de executar a aplicação, você precisa configurar o arquivo .env.example, depois renomeie ele para .env
-
Agora inicie o container do banco de dados e rabbitmq:
# Execute o container do banco de dados
docker-compose -f docker-compose-dev.yml up -d
- Agora inicie a aplicação:
# Iniciando a aplicação
./gradlew bootRun
-
A url base da aplicação é: localhost:8080/
-
Para acessar o swagger da aplicação após o container estar online, acesse: Swagger url
-
Ou então importe a collection do insomnia que esta na pasta doc/insomnia
Para contribuir com o projeto, veja mais informações em CONTRIBUTING
Para ver as últimas alterações do projeto, acesse AQUI
After cloning project add commit-msg hook in your git path
git config core.hooksPath .githooks