Article image
André Cavalcanti
André Cavalcanti29/06/2024 14:22
Share

Recomendador de Roupas com Spring Boot: Uma Jornada Técnica no Treinamento Santander/DIO

  • #Spring
  • #Java
  • #JWT

Este artigo detalha minha experiência no treinamento Santander 2024 - Backend com Java, focado em desenvolvimento com Spring Boot. O que começou com a motivação de conhecer uma nova arquitetura, virou combustível para criar um MVP de um Recomendador de Roupas, utilizando medidas corporais dos usuários para sugerir produtos adequados.

Estrutura do Treinamento

Ao longo do treinamento fomos orientados a configurar o ambiente usando algumas ferramentas que ensinaram e outras que acabei buscando fora do treinamento:

  • VS Code: IDE escolhida para desenvolvimento Java.
  • Spring Boot: Framework ensinado no treinamento.
  • MySQL: Banco de dados relacional para armazenamento dos dados.
  • JWT: Implementação de autenticação e autorização de usuários.
  • Especificação OpenAPI: Anteriormente conhecida como Especificação Swagger. 

Basicamente, após percorrer o caminho que me orientou na configuração básica do ambiente para permitir o desenvolvimento fluido da aplicação, decidi colocar minha ideia em prática. 

Implementação das Operações CRUD

Para gerenciar os produtos de roupas, criei entidades JPA que representam os dados, implementei repositórios Spring Data JPA para facilitar as operações de persistência, e desenvolvi controladores REST para as operações CRUD.

Desenvolvimento do Sistema de Recomendação de Roupas

A parte mais desafiadora e interessante foi desenvolver a lógica de recomendação que precisou de um pouco de matemática para comparar as medidas informadas pelo usuário com as dimensões dos produtos cadastrados, incluindo a normalização das medidas para melhorar a precisão.

Filtros e Paginação

Também adicionei um filtro opcional para recomendação de produtos para uma ou mais categorias e implementei paginação usando Spring Data para garantir respostas organizadas e eficientes.

Resolvendo Problemas Comuns

Enfrentei diversos desafios técnicos, como erros de tipagem e inicialização preguiçosa das coleções. Resolvi esses problemas com boas práticas de depuração e ajustes na configuração de transações JPA.

Deploy em Produção

Então com a implementação das funcionalidades do cadastro do usuário, login, cadastro do produto com suas dimensões e do método que faz a recomendação das roupas recebendo as medidas corporais, foram garantidas as funcionalidades básicas do MVP e a validação para o deploy da aplicação na arquitetura da Railway.

Documentação da API em Produção: 

https://sizer-java-production.up.railway.app/swagger-ui/index.html

https://api.sizer.com.br/swagger-ui/index.html

Exemplo das Requisições

01- Registro do Usuário

Request POST https://api.sizer.com.br/v1/auth/signup

Body
{
"email": "andremiani@gmail.com",
"password": "12345678",
"fullName": "André Miani"
}

02-Autenticação do Usuário

POST https://api.sizer.com.br/v1/auth/signin

Body
{
"email": "andremiani@gmail.com",
"password": "12345678"
}

03-Cadastro do Produto

POST https://api.sizer.com.br/v1/product/create

Body
{
   "product_id": "1",
   "sku_id": "1",
   "category_id": "dress",
   "name": "White Dress",
   "dimensions": {
     "chest": 100.0,
     "waist": 80.0,
     "hip": 90.0,
     "length": 120
   }
}

04- Recomendado de Produtos

GET https://api.sizer.com.br/v1/product/recommend

Body
{
"measurements": {
  "chest": 100.0,
  "waist": 79.0,
  "hip": 90.0
},
"tolerance": 0.05,
"category": [
  "dress"
]
}

Conclusão

Participar do treinamento Santander/DIO foi uma experiência enriquecedora que me permitiu colocar em prática conhecimentos teóricos e superar desafios técnicos. A jornada de criar um MVP de um Recomendador de Roupas me ensinou a importância da persistência, da busca por soluções e do aprendizado contínuo.

Share
Comments (0)