Skip to content

Ecommerce project, to manage products, nfe, orders, using clean architecture and DDD

Notifications You must be signed in to change notification settings

Kaua3045/ecommerce

Repository files navigation

Ecommerce

Ferramentas utilizadas

Java Spring Gradle Docker MySQL GitHub Actions RabbitMQ

Projetos complementares do ecommerce

Sobre

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.

Tabela de conteúdos

Arquitetura

Circulo da clean architecture

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

Requisitos para rodar o projeto

  1. Docker e docker-compose
  2. Java e JDK 17

Instruções para executar o projeto

  1. 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  
  1. Antes de executar a aplicação, você precisa configurar o arquivo .env.example, depois renomeie ele para .env

  2. Agora inicie o container do banco de dados:

# Execute o container do banco de dados
docker-compose -f docker-compose-dev.yml up -d
  1. Agora inicie a aplicação:
# Iniciando a aplicação
./gradlew bootRun
  1. A url base da aplicação é: localhost:8080/

Contribuindo com o projeto

Para contribuir com o projeto, veja mais informações em CONTRIBUTING

Changelog

Para ver as últimas alterações do projeto, acesse AQUI

Configurações para dev

After cloning project add commit-msg hook in your git path

    git config core.hooksPath .githooks

About

Ecommerce project, to manage products, nfe, orders, using clean architecture and DDD

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages