Esse projeto esta sendo criado para gerenciar toda a parte de ecommerce, produtos, orders, etc.
-
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 o DDD corretamente, pois é um conceito que eu não tinha muito conhecimento, implementar toda a parte de produtos
-
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, aprendi também que devemos pensar e organizar tudo antes de começar a programar, pois se não fizermos isso, o código ficará uma bagunça e será difícil de dar manutenção.
- 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.git cd ecommerce
# 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:
# 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 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