Este desafio técnico é destinado aos candidatos à posição de Engenheiro de Software no projeto UEFS - NETRA. O objetivo é avaliar competências práticas em desenvolvimento de software por meio da criação de uma API RESTful utilizando PHP (Laravel 8 ou superior), um Sistema de Gerenciamento de Banco de Dados (SGBD) de sua escolha, e Docker.
O prazo para a realização do teste é de 5 dias corridos, e a entrega deve ser feita por meio de um repositório no GitHub.
Para participar, faça um fork deste repositório, aplique a solução proposta e envie para nossa análise.
Você deverá desenvolver uma API RESTful com as seguintes funcionalidades:
- CRUD de Usuários
- CRUD de Posts
- CRUD de Tags
- Um usuário pode ter várias postagens.
- Uma postagem pode conter várias tags (palavras-chave).
- Todas as rotas devem seguir o padrão
/api, por exemplo:/api/posts. - Fornecer um
Dockerfileedocker-compose.ymlpara execução do projeto. - Incluir documentação(README) clara sobre como rodar o projeto localmente, como testar os endpoints, visão geral da arquitetura e estrutura do projeto e destaques sobre decisões técnicas e particularidades da implementação.
Serão avaliados os seguintes pontos conforme o nível de senioridade:
- Conhecimento e uso de recursos do Laravel
- Familiaridade com Docker e Docker Compose
- Organização, clareza e estrutura do código
- Implementação funcional da API RESTful
- Utilização adequada do banco de dados escolhido
- Fundamentos de lógica de programação
- Conhecimento básico dos princípios SOLID
- Adesão aos padrões PSR (estilo de código PHP)
- Uso inicial de testes (PHPUnit ou Pest) — não obrigatório
- Lógica de programação mais estruturada
- Aplicação consistente dos princípios SOLID
- Implementação de testes unitários (PHPUnit ou Pest)
- Boas práticas de performance e legibilidade do código
- Arquitetura bem definida e organização do projeto
- Uso estratégico dos princípios SOLID em componentes reutilizáveis
- Testes completos (unitários e, se possível, de integração)
- Otimizações de performance no código e consultas
- Documentação técnica clara e abrangente (API, arquitetura, setup)
- Uso de boas práticas de versionamento e estruturação do repositório
Após a entrega e análise do teste prático, os candidatos que avançarem para a próxima etapa participarão de uma entrevista técnica, onde serão avaliados critérios como:
- Clareza na explicação de decisões técnicas
- Capacidade de análise e resolução de problemas
- Conhecimento sobre arquitetura de software e design de soluções
- Abordagem colaborativa e visão de liderança técnica (para cargos mais seniores)
- Nível de profundidade em testes, padrões, e boas práticas além do que foi entregue
- Documentação automática com Swagger ou Scribe
- Interface gráfica simples para consulta dos dados (React, Vue, Blade, Livewire, etc.)
Após a análise técnica:
- Se aprovado, entraremos em contato para a entrevista técnica.
- Se não aprovado, forneceremos um retorno com os principais pontos de melhoria observados.
Boa sorte!
Equipe de Desenvolvimento NETRA – Projeto UEFS