Você está iniciando seu estágio em uma empresa de TMS (Transportation Management System) — um sistema que gerencia o transporte de cargas.
No seu primeiro dia, o time te passou duas tarefas: um bug reportado pelo time de operações e um novo endpoint para implementar.
5 dias corridos a partir do recebimento deste desafio.
PHP 8.1+ · PDO · MySQL 8+ · Phinx (migrations e seeds)
# 1. Configure o ambiente
cp .env.example .env
# Edite .env com as credenciais do seu banco MySQL
# 2. Instale as dependências
composer install
# 3. Crie as tabelas
vendor/bin/phinx migrate
# 4. Popule os dados iniciais
vendor/bin/phinx seed:run
# 5. Suba o servidor
php -S localhost:8000 public/index.phpO sistema gerencia transportadoras e seus contatos (responsáveis de cada empresa).
Endpoints disponíveis:
GET /transportadoras → lista transportadoras ativas
GET /transportadoras/{id} → detalhe de uma transportadora
GET /transportadoras/{id}/contatos → lista contatos da transportadora
GET /transportadoras/{id}/contatos/{cid} → detalhe de um contato
Dados disponíveis após o seed:
- 3 transportadoras (2 ativas, 1 inativa)
- 4 contatos distribuídos entre elas
Leia o arquivo BUG_REPORT.md, reproduza o problema, corrija e preencha o BUGFIX.md.
O time precisa conseguir cadastrar novos contatos para uma transportadora.
Implemente:
POST /transportadoras/{id}/contatos
Body esperado:
{
"nome": "João Costa",
"email": "joao.costa@exemplo.com.br",
"telefone": "(11) 99999-0000",
"cargo": "Comercial"
}Regras:
nomeeemailsão obrigatóriostelefoneecargosão opcionais- O
emaildeve conter@ - A transportadora deve existir (e estar ativa)
- Retornar o contato criado com status
201
Não entregue tudo em um commit só — queremos ver as etapas:
fix: corrigir listagem de contatos por transportadora
feat: implementar POST /transportadoras/{id}/contatos
docs: preencher BUGFIX.md
DELETE /transportadoras/{id}/contatos/{cid}— remover um contato- Validar se o e-mail já está cadastrado para a mesma transportadora
| O que avaliamos | Peso |
|---|---|
| Bug corrigido e funcionando | Alto |
| BUGFIX.md preenchido (técnico + resposta para Camila) | Alto |
| Endpoint POST funcionando com validações | Alto |
| Código organizado e legível | Médio |
| HTTP status codes corretos | Médio |
| Commits separados por etapa | Médio |
- Suba em repositório público no GitHub (sem BRUDAM no nome)
- README do seu projeto com: como rodar, exemplos de requisição, decisões técnicas
- Envie ao recrutador: nome completo · link do repo · LinkedIn
Se algo estiver ambíguo, documente sua interpretação e siga. Decisão sob incerteza também é avaliada.
Michel Mileski — @eusouomichel