Teste Técnico – Desenvolvedor Backend (Laravel)
Objetivo
Este teste tem como objetivo avaliar seus conhecimentos em desenvolvimento backend com Laravel, organização de código, entendimento de regras de negócio, segurança básica e boas práticas na construção de APIs.
O tempo de execução passa a ser considerado a partir do recebimento deste material, permitindo avaliar sua agilidade, tomada de decisão e capacidade de entrega.
Desafio
Desenvolver uma API REST utilizando Laravel que contemple autenticação, gerenciamento de usuários, categorias e postagens de notícias, além de um front-end simples em Laravel para interação com os dados.
1. Autenticação e Usuários
Implementar:
- Cadastro de usuário
- Login retornando token Bearer
- Logout com revogação do token
- Autenticação utilizando Laravel Sanctum
2. Categorias
A categoria deve ser uma entidade própria no sistema.
Relacionamentos esperados:
- Um usuário possui várias postagens
- Uma categoria possui várias postagens
3. Postagens de Notícias (API REST)
Implementar CRUD completo contendo obrigatoriamente:
- Título
- Tag
- Resumo
- Conteúdo
- Categoria
Regras de negócio
- Apenas usuários autenticados podem criar, editar ou deletar postagens.
- O usuário pode editar ou excluir somente as próprias postagens.
- Utilizar Policies do Laravel para controle de permissões.
4. Listagem de Postagens
O endpoint de listagem deve conter:
- Paginação
- Filtros opcionais por:
- Categoria
- Tag
- Título (busca textual)
5. Front-end em Laravel
Criar um front-end simples utilizando Blade ou Livewire que permita:
- Listar postagens com paginação
- Visualizar uma postagem
- Criar, editar e deletar postagens (usuário autenticado)
- Exibir categorias e filtros
O foco do front-end é funcionalidade e organização, não design visual.
6. Arquitetura e Boas Práticas
O projeto deve demonstrar:
- Controllers finos, contendo apenas responsabilidades de requisição/resposta
- Uso de Form Requests com:
- Validações completas
- Mensagens de erro claras
- Código limpo, organizado e de fácil manutenção
7. Command (Artisan)
Criar um Command do Laravel que:
- Altere o título de todas as postagens
- Receba o novo título como parâmetro
Exemplo esperado:
8. Banco de Dados
Implementar:
- Migrations para todas as entidades
- Seeders organizados contendo dados de exemplo:
- Usuários
- Categorias
- Postagens
Entrega
Ao finalizar o teste:
- Disponibilizar o código em um repositório público no GitHub
- Incluir instruções claras de execução no README
Diferencial (Bônus)
Será considerado um diferencial positivo:
- Implementação de Service Layer para organização das regras de negócio
- Anterior
- Teste backend