Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Develop #78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Uh oh!
There was an error while loading. Please reload this page.
Develop #78
Changes from all commits
f1a8e06c75ef91cf63a3e7e6dac1e0699c72a4fa0fd6f939e9d10cb353e155496aff4b9ee72700a05b7cccb8f4b84201765b72965150760de4abcc40e02883b71c46f4254f241a4841d5b9174057f2b927656b6cf1c57ce67739c9418a1e7bd896eebdcb8cc94f5502a794097ffbc9f29957a6d9138e0950ffb36f6f91d7543a953e3a8fbcac31dbfb880badad179f112e70d403cb90b3a238190b69fa6f4eb4ca1186d1356c4d5bce2d473ae3d3d291e1cb9b70774c56b46bdea05adb19dcd4bbf7e7b8c178ef27d858103e0041320305b39b1711e2691e72fbca07f2d713775451dd4d7630e3341ebc923427f68ef0f40ed5014fe6b8ef537b7a636a45ec7f746bcebae19e68e542d7e5f17d4f95d9d600daeea00fa03c0130b193f9428f4529fa3f2142160f3540224624c4f8e91e445bc74328b6165d221106106ef62dc1c7cb81dc37f653f4df5b8a381b6b94566a24aad7917da66301ef86b2f8ae44678cb9dc6622651f65d6874f3cd353a31f8477c338242871d6078169b9fc59560c9279a722e80d710a67fa388dbf48a75fbb138a2c418383aca719932983f7b2ae5488d6c03dffb15903a87579f6773bfa1aabe7192b18d51194a2af7eded552d4f7bf9d071668fe04008a30e4c330b457e71878369e3908cf3a5d3408d4602c4cf57c0f9fd73c7908445282c16e0bf26f88c5e06319ba0b4dbe92cc3b8481df0d4a66e24ddd27d077529103d428ded6ee3c83e6683613b4aFile filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
There are no files selected for viewing
quick-transferQuick Transfer -fFrontend👥 Integrantes da Equipe
📌 Descrição do Problema
Em processos de transferência e alocação de estudantes/aprendizes em vagas internas ou programas de formação na empresa, a gestão manual por planilhas ou sistemas descentralizados acarreta falhas de comunicação, morosidade na triagem de candidatos, dificuldade no agendamento e acompanhamento de entrevistas, além da falta de rastreabilidade do progresso de cada participante.
🎯 Objetivo da Solução
O Quick Transfer é uma plataforma centralizada projetada para automatizar e otimizar o fluxo de transferência, triagem, alocação e gerenciamento de estudantes e turmas. Esta interface web consome a API backend do Quick Transfer e provê uma experiência intuitiva e responsiva para os perfis de usuário Administrador, Gestor e Coordenador, com controle de acesso baseado em papéis (RBAC) aplicado tanto no middleware de roteamento quanto na renderização condicional de componentes.
🛠️ Tecnologias Utilizadas
tw-animate-css,tailwind-merge,class-variance-authority (CVA)shadcn/ui4,@base-ui/react1.6, Lucide React (ícones)next/font)apiFetch(proxy interno/backend)HttpOnly+ cookie de perfil (userRole); proteção de rotas via Next.js Middlewareeslint-config-next📦 Instruções para Instalação
Pré-requisitos
Passo a Passo de Instalação
Clonar o repositório:
Instalar as dependências:
Configurar as Variáveis de Ambiente: Crie um arquivo
.env.localna raiz demy-app/com base no arquivo.env.example:Edite o arquivo
.env.localconforme a seção de Variáveis de Ambiente Necessárias.🚀 Instruções para Execução
Opção A: Ambiente de Desenvolvimento (Recomendado)
Inicia o servidor de desenvolvimento com hot-reload:
A aplicação estará acessível em
http://localhost:3000.Opção B: Build de Produção
Gera o bundle otimizado e inicia o servidor de produção:
Integração com o Backend
Por padrão, o frontend utiliza um proxy interno do Next.js na rota
/backendpara redirecionar as chamadas à API, evitando problemas de CORS e não expondo o endereço do backend. Certifique-se de que o backend esteja em execução e acessível (por padrão, emhttp://localhost:8080/api).🔑 Variáveis de Ambiente Necessárias
As variáveis de ambiente devem ser configuradas no arquivo
.env.locallocalizado na raiz do diretóriomy-app/:NEXT_PUBLIC_API_URL/backendé utilizadoNEXT_PUBLIC_ENABLE_MOCK_AUTHfalseNEXT_PUBLIC_MOCK_AUTH_USERNAMEadmin.mockNEXT_PUBLIC_MOCK_AUTH_PASSWORDMock@123456789!🌐 Rotas e Módulos da Aplicação
A aplicação utiliza o App Router do Next.js e organiza as rotas por perfil de acesso:
ADMIN/adminCOORDINATOR/dashboardMANAGER/manager/vacanciesO controle de acesso é aplicado em dois níveis:
src/middleware.ts): Intercepta todas as requisições de navegação, valida a presença e validade do token JWT e redireciona o usuário para a rota inicial de seu perfil caso tente acessar uma rota não permitida.src/components/layout/sidebar.tsx): Exibe apenas os itens de menu autorizados para o perfil autenticado.⚙️ Principais Funcionalidades
Autenticação e Controle de Acesso (RBAC):
HttpOnly, sem armazenamento de token nolocalStorage.ADMIN,MANAGER,COORDINATOR).Módulo do Administrador (
/admin):Módulo do Coordenador (
/dashboard):Módulo do Gestor (
/manager):Componentes Compartilhados:
DataTable: Tabela genérica e reutilizável com suporte a estado de carregamento (skeleton), paginação e ações por linha.StatCard: Cards de estatísticas com ícones e indicadores de variação.SearchInput: Campo de busca padronizado.EmptyState: Feedback visual para listagens sem dados.FAB(Floating Action Button): Ação primária flutuante.TimelineItem: Exibição de eventos em linha do tempo.Proxy de API Integrado (
/backend/[...path]):Mock de Autenticação para Demonstração:
📁 Estrutura Resumida de Pastas
🛡️ Boas Práticas de Segurança Adotadas
HttpOnly: O token JWT nunca é acessado pelo JavaScript do cliente; o armazenamento é delegado ao cookie gerenciado pelo backend, protegendo contra ataques XSS./backenddo Next.js, ocultando o endereço do servidor backend do cliente e evitando a exposição de infraestrutura.apiFetch) mapeia códigos HTTP de erro para mensagens amigáveis e estáticas, evitando a exibição de stacktraces ou detalhes internos da infraestrutura ao usuário final.NEXT_PUBLIC_ENABLE_MOCK_AUTH=true, com instrução de novo deploy para remoção das credenciais do bundle em produção.🧪 Procedimento Utilizado para Realização dos Testes
O projeto documenta um plano de testes abrangente (
PLANO_DE_TESTES.md) baseado na React Testing Library em conjunto com Jest, cobrindo os fluxos críticos da interface.Tipos de Testes Planejados
ADMIN,MANAGER,COORDINATOR) —CT-001.DataTable—CT-002.CT-003.CT-004.apiFetchem cenários de indisponibilidade da API e erros HTTP —CT-005.CT-006.CT-007), Coordenador (CT-008) e Administrador (CT-009).Matriz de Cobertura de Requisitos
NEXT_PUBLIC_ENABLE_MOCK_AUTH) funcionarão corretamente.useState/useEffect, o que pode demandar refatoração em funcionalidades de maior complexidade.src/lib/mock-data.ts, sem integração com um servidor mock dedicado (ex.: MSW - Mock Service Worker), o que limita a fidelidade dos testes de integração.studentIdevacancyId. O frontend bloqueia essa gravação para não transformar o status global do aluno em um vínculo incorreto com todas as vagas.Uh oh!
There was an error while loading. Please reload this page.