Full Stack Developer
Hiring Test
Contexto do Teste
O developer vai construir uma mini-aplicação de gestão de tarefas por projeto (task manager
simplificado).
Parte 1 - Backend com Laravel 12
Requisitos
Modelos e base de dados
● Project (id, name, description, status: active/archived, timestamps)
● Task (id, project_id, title, description, status: todo/in_progress/done, priority:
low/medium/high, due_date, timestamps)
API RESTful (JSON)
Método Endpoint Descrição
GET /api/projects Listar projetos com contagem de tarefas
POST /api/projects Criar projeto
GET /api/projects/{id}/task Listar tarefas do projeto (com filtros)
s
POST /api/projects/{id}/task Criar tarefa
s
PATCH /api/tasks/{id} Atualizar status/prioridade
DELETE /api/tasks/{id} Eliminar tarefa
Requisitos obrigatórios
1. Form Requests com validação completa em todos os endpoints de escrita
2. API Resources para formatar as respostas (sem expor campos desnecessários)
3. Filtros no GET de tarefas: ?status=todo&priority=high
4. Scope no modelo Task: scopeOverdue() para tarefas com due_date passada
5. Um Seeder com dados realistas para testar
6. Feature tests com PHPUnit para pelo menos 3 endpoints
7. Paginação com cursor ou offset
8. Rate limiting na API
9. Soft deletes nas tarefas
Parte 2 - Frontend com Vue 3 + Tailwind 4
Requisitos
Estrutura da aplicação
● Vue 3 com Composition API (obrigatório, sem Options API)
● Vue Router com pelo menos 2 rotas: lista de projetos e detalhe do projeto
● Pinia para gestão de estado
Vistas obrigatórias
1. Lista de Projetos - cards com nome, descrição, status e contagem de tarefas. Botão para
criar novo projeto (modal ou inline).
2. Detalhe do Projeto - lista de tarefas com possibilidade de filtrar por status e prioridade. Criar
nova tarefa. Mudar status de tarefa (drag-and-drop ou dropdown simples). Indicação visual
de tarefas em atraso.
Requisitos técnicos
1. Composable useProjects() e useTask() para encapsular lógica de API
2. Componente reutilizável TaskCard com props tipadas (TypeScript ou JSDoc)
3. Feedback visual em todas as ações: loading states, erros e sucesso
4. Layout responsivo (mobile-first)
5. Optimistic updates ao mudar status de tarefa
6. Debounce no filtro de tarefas
7. Transições/animações entre estados
8. Testes com Vitest para um composable
Entrega e Instruções para o Developer
Formato de entrega
● Repositório Github partilhado - nuno@[Link]
● README com: instruções de instalação, decisões técnicas relevantes e o que ficou por
implementar (e porquê)
Setup mínimo esperado
● php artisan migrate --seed deve funcionar sem erros
● npm run dev deve arrancar o frontend sem configuração adicional
● .[Link] preenchido com todas as variáveis necessárias