Funcionalidades
Inventário de todas as páginas e o que cada uma faz, organizado como o menu lateral.
Visão geral de cada página da aplicação, na mesma ordem em que aparecem no menu lateral (ver Convenções pra como o Sidebar decide o que mostrar). Para o que cada endpoint de backend faz por trás, ver a seção Backend.
Início
Rota: / · sem permissão exigida.
Feed de novidades do sistema ("devblog"), com posts vindos direto do Supabase (não passa pela API do backend). Paginado (5/10/25 por página), sempre ordenado do mais novo pro mais antigo, com o post mais recente destacado. O conteúdo de cada post suporta Markdown e abre num modal com scroll interno.
Diretoria
Aprovação de Vagas — /vacancy-approval (role ADMIN)
Fila de aprovação para vagas com motive = ACCOUNT_EXPANSION e approvalStatus = PENDING (ver
Recrutamento). Alternância entre visão em tabela/cards (persistida em
cookie), filtros por cliente/cidade e ordenação. Cada item tem botões Aprovar e Rejeitar
(rejeição exige motivo) — ambos disparam e-mail automático pro time.
Comercial
Clientes — /clients (permissão client:read)
CRUD de clientes: busca por razão social/nome fantasia, filtro por tipo de pessoa (PJ/PF), ordenação por
nome. Edição em /clients/[id]/edit inclui as unidades, contatos e benefícios do cliente (ver
Clientes no backend).
Recursos Humanos
Vagas — /vacancy (permissão vacancy:read)
Tela mais rica do sistema: visão tabela/cards, busca por cliente ou cidade, e 6 filtros combináveis
(status de aprovação, status operacional, motivo, tipo de serviço, tipo de contratação, ordenação).
Permite criar e editar vagas, incluindo upload da imagem de roteiro (roadmap).
A aba Candidaturas mostra candidatos vinculados, mantém tag/alerta quando um candidato está restrito,
mostra o motivo da restrição no hover, exige confirmação para adicioná-lo à vaga, confirma ações sensíveis
em modal (aprovar, reaprovar desistência, registrar desistência, remover) e reaprova candidaturas em
WITHDRAWN quando o candidato volta ao processo.
Candidatos — /candidates (permissão candidate:read)
Lista de candidatos com busca por nome e abas Todos / Banco de Talentos. Edição em
/candidates/[id]/edit cobre todos os dados pessoais, endereço, CNH, estado civil, escolaridade etc. (ver
Recrutamento no backend pra máquina de estados do candidato). Marcar ou
remover restrição exige confirmação em modal; ao restringir, o formulário pede o motivo, que aparece no
hover da tag Restrito nas listas e nas vagas. Na listagem, restrição e Banco de Talentos aparecem em
uma coluna única de Status.
Gerenciamento (todas as páginas desta seção exigem role ADMIN)
Usuários — /users
CRUD de usuários do sistema (busca por nome/e-mail), atribuição de papéis/permissões na edição
(/users/[id]/edit).
Níveis de Acesso — /access-levels
Gerencia Roles e quais Permissions cada uma carrega (ver Permissões).
Busca por nome/chave, criação e edição de papéis com seleção de permissões.
Auditoria — /audit-log
Consulta o log de auditoria (ver Auditoria no backend) com filtros por usuário ator, tipo de ação e tipo de recurso. Paginado, cada item é expansível pra ver o detalhe da mudança.
Lixeira — /trash
Ver Soft Delete no backend pro conceito. A tela tem uma aba por entidade (Candidatos, Vagas, Clientes, Unidades, Usuários), listando só os registros com soft delete ativo, com seleção em massa e duas ações por item: restaurar ou excluir permanentemente.
Configurações — /settings
Configurações globais do sistema. Hoje controla os destinatários dos e-mails enviados pela rota interna
/api/send-email (chamados, ampliação de vaga, vaga aprovada, reprovada e fechada), o remetente/CC e os
valores padrão usados no cadastro de novas vagas: salário, alimentação diária, combustível, aluguel,
comunicação, periculosidade, plano de saúde e plano odontológico.
Suporte
Chamados — /chamados (sem permissão exigida)
Formulário simples de abertura de chamado (título, categoria — Bug/Dúvida/Sugestão/Outro —, prioridade,
descrição). Não tem listagem: o envio dispara um e-mail pro time de suporte via /api/send-email
(rota interna do Next.js usando Resend).
Fora do menu
- Perfil —
/profile, acessível a qualquer usuário logado (avatar no rodapé do sidebar). Permite editar nome/telefone (e-mail é somente leitura) e trocar a senha. - Empregados (
/employees) e Banco de Talentos dedicado (/talent-pool) — rotas existem mas mostram só "Em desenvolvimento...".Employeesnem aparece no sidebar hoje (comentado no código).
Telas públicas / de erro
/login, /sign-in, /forbidden (403), /unauthenticated (401), /service-unavailable (502/503/erro de
rede), /internal-server-error (500), mais o not-found.tsx (404) e os error boundaries error.tsx /
global-error.tsx do Next.js. O roteamento entre elas é feito pelo middleware (proxy.ts) e pelo
interceptor do axios (shared/lib/api.ts) — ver Convenções pra detalhes de
autenticação.