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.