Este repositório contém a solução para o desafio técnico da TecnoFit, desenvolvida em PHP 8.1 utilizando o framework Laravel 12. O projeto consiste em uma API de ranking de personal records para diferentes movimentos (exercícios).
- PHP 8.1
- Laravel 12
- Docker + Docker Compose
- MySQL 8
- Arquitetura SOLID e Clean Code
git clone https://github.com/victorluissantos/tecnofit
cd tecnofit
docker-compose up -d
O Laravel está rodando dentro do container chamado tecnofit_app. Todos os comandos artisan devem ser executados dentro desse container.
docker exec -it tecnofit_app bash
Dentro do container, execute:
cp .env.example .env
O .env deve ter as seguintes configurações para conexão correta com o banco MySQL dentro do Docker:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=tecnofit
DB_USERNAME=tecnofit_user
DB_PASSWORD=tecnofit_pass
Ainda dentro do container Laravel, execute:
php artisan migrate --seed
A API de ranking estará disponível em:
GET http://localhost:8000/api/ranking/{movement_id}
Exemplo:
GET http://localhost:8000/api/ranking/1
Para facilitar os testes da API, incluímos um arquivo de coleção do Postman chamado postman-backend-api.json na raiz do repositório. Siga os passos abaixo para importar a coleção e testar os endpoints:
Baixe o arquivo de coleção:
Você pode baixar o arquivo aqui.
Importe a coleção no Postman:
Abra o Postman.
Clique em Import no canto superior esquerdo.
Selecione a opção Raw Text ou Upload Files e escolha o arquivo postman-backend-api.json.
Clique em Continue e depois em Import.
Teste o endpoint de login:
Na coleção importada, execute a requisição Login.
Use as credenciais conforme definidas no seed (por exemplo, email: mosciski.angeline@example.com e senha: password).
Se o login for bem-sucedido, um token será retornado.
Configure o token no Postman:
Após o login, copie o token retornado.
Defina uma variável de ambiente (ou global) chamada token e cole o valor do token.
Essa variável é usada no header da requisição de Ranking com o formato:
Authorization: Bearer {{token}}
Teste o endpoint de Ranking: Na coleção, execute a requisição Get Ranking - Movimento 1. A URL utilizada será:
GET http://localhost:8000/api/ranking/1
Você deverá receber um JSON com o nome do movimento e o ranking dos usuários, com suas posições, recordes e datas.
Entrar no container da aplicação Laravel
docker exec -it tecnofit_app bash
Executar migrations novamente (reset completo)
php artisan migrate:fresh --seed
Ver logs do container da aplicação
docker logs tecnofit_app
Parar os containers
docker-compose down
Requisitos Atendidos
✅ Código em PHP 8.1 usando Laravel 12 ✅ Aplicação containerizada com Docker e Docker Compose ✅ Arquitetura seguindo boas práticas (SOLID, Clean Code, Separation of Concerns) ✅ Implementação da API de ranking com tratamento correto de empate no ranking ✅ Instruções de execução claras e completas neste README ✅ Código versionado e publicado no GitHub ✅ Validação e Sanitização de Dados ✅ Autenticação e Autorização ✅ Tratamento de Erros
Observações
Todos os comandos artisan devem ser executados dentro do container tecnofit_app.
O banco de dados roda no container tecnofit_db.
O ranking considera que usuários com o mesmo recorde ocupam a mesma posição.
Contato
Desenvolvido por: Vctor Luis Santos E-mail: victorluissantos@live.com LinkedIn: https://www.linkedin.com/in/victor-luis-santos/