Seja bem vindo

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:
php artisan posts:update-title noweb



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