Desafio SOLUTIS - SQUAD 4
Cabou o Money


Este repositório contém o código-fonte e a implementação de um sistema de backend em Java para um ecommerce voltado para livestreams.

Trello: https://trello.com/b/QvGBf6JC/desafio-locadora-solutis

Obejtivo

O objetivo deste projeto é fornecer uma plataforma rápida e escalavel para gerenciar a compra e venda em uma plataforma de ecommerce.

Funcionalidades Principais

  • Gestão de Pedidos: Cadastro, atualização e remoção de pedidos no sistema. Cada pedido possui uma lista de produtos.

  • Gestão de Produtos: Cadastro, atualização e remoção de produtos no sistema.

  • Gestão de Pagamentos: Registro e manutenção de dados dos pagamentos da plataforma.

  • Envio de Email: Os clientes são notificados ao realizar pagamentos na plataforma.

Tecnologias Utilizadas

  • Java: v20.0 - Linguagem de programação principal para a lógica de negócios e manipulação de dados.

  • Spring Boot: v3.1.2 - Facilita a configuração e criação de aplicações Spring, reduzindo a necessidade de configurações manuais.

  • Maven v4.0.0 - Gerenciador de dependencias, facilitando a implementação e gerenciamento de bibliotecas.

  • Spring Data JPA: - Abstração para o acesso e manipulação de dados no banco de dados, facilitando a persistência dos objetos Java.

  • Banco de Dados MySql: - Utilizado para armazenar informações sobre veículos, clientes, reservas e aluguéis.

  • Lombok v1.18.28 - Ferramenta utilizada para amentar a produtividade.

  • IntelliJ IDEA - IDE utilizada pela equipe para densenvolvimento do projeto.

  • RabbitMQ - Mensageria assincrona utilizada no projeto

  • Arquitetura de Microsservices - Arquitetura do projeto escolhida

  • Junit5 - Testes unitarios

  • Locust - Testes de carga

  • Spring Cloud - Utilizado para configurar o gateway e rotas

  • Spring Security e JWT - Segurança feita com geração de tokens JWT

  • Swgager e Javadoc - Documentação feita com essas bibliotecas

Estrategias de Desenvolvimento

  • Arquitetura de microsservices - Arquitetura escolhida pela escalabilidade, resiliencia e facilidade de manutenção
Captura de Tela 2023-11-20 às 14 17 21
  • Spring Security - Foi utilizado o spring security juntamente com a geração de tokens JWT para gerar liberar o acesso, foi escolhido pela facilidade de integração, segurança e desempenho
Captura de Tela 2023-11-20 às 14 20 42
  • Comunicação assincrona com RabbiMQ - Para escalabilidade e desempenho as comunicações entre os microsserviços são assincronas
Captura de Tela 2023-11-20 às 14 31 34

Captura de Tela 2023-11-20 às 14 43 15
  • Testes Unitarios e de Carga - Estratégia utilizada para testar o funcionamento esperado dos componentes e a resistencia do sistema
Captura de Tela 2023-11-09 às 23 31 48

Captura de Tela 2023-11-20 às 15 37 29
  • Documentação - Utilizamos o swagger e javadoc para documentar a aplicação
Captura de Tela 2023-11-20 às 15 50 55

Configuração e Uso

  1. Clone este repositório.

  2. Configure as informações do banco de dados no arquivo application.properties.

  3. Execute a aplicação Server primeiro e depois os outros microsserviços.

  4. Acesse a API REST em http://localhost:8765 e utilize as rotas para interagir com o sistema.

  5. Verifique também a documentação swagger da aplicação http://localhost:8080/swagger-ui/index.html# para ter acesso às rotas.

Links