Este é o front-end da aplicação Sensor Flow, projetado para visualizar os dados salvos pelos sensores. A aplicação é construída com Next.js e utiliza autenticação baseada em cookies HTTP-only para proteger as rotas do sistema.
- Login: Autenticação via formulário com suporte a cookies HTTP-only.
- Logout: Encerramento da sessão do usuário.
- Autenticação Automática: Verificação do token de sessão para redirecionar o usuário ao dashboard ou à tela de login.
- Dashboard: Visualização interativa dos dados dos sensores com gráficos e filtros de intervalos de tempo.
login/: Formulário e a lógica de autenticação.context/AuthContext.tsx: Gerencia o estado de autenticação.middleware.ts: Protege as rotas.components/Dashboard/: Componente separado para o dashboard, contendo a lógica e a interface de visualização dos dados dos sensores.
- POST
/auth/login: Realiza o login e define um cookie HTTP-only. - GET
/auth/me: Verifica o estado de autenticação (retorna200 OKse o token for válido). - POST
/auth/logout: Realiza o logout removendo o cookie de autenticação. - GET
/sensor-data-aggregated: Recupera os dados agregados dos sensores com base no intervalo de tempo especificado.
-
Login
- Usuário preenche o formulário na página de login.
- Credenciais são enviadas para
/auth/login. - Se bem-sucedido, o usuário é redirecionado ao dashboard.
-
Verificação Automática
- Ao acessar a aplicação, o estado de autenticação é verificado via
/auth/me. - Usuários autenticados são direcionados ao dashboard.
- Usuários não autenticados são redirecionados à página de login.
- Ao acessar a aplicação, o estado de autenticação é verificado via
-
Logout
- O botão de logout chama
/auth/logoutpara encerrar a sessão. - Usuário é redirecionado à página de login.
- O botão de logout chama
-
Dashboard
- Após o login, o usuário acessa o dashboard onde pode visualizar gráficos interativos dos dados dos sensores.
- É possível selecionar diferentes intervalos de tempo para filtrar os dados exibidos.
- O dashboard exibe métricas como a média dos valores dos sensores e o total de amostras coletadas.
-
Clone o repositório:
git clone <url-do-repositorio> cd sensor-flow-front
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente:
Crie um arquivo
.env.locale adicione:NEXT_PUBLIC_API_URL=http://localhost:4000 -
Execute a aplicação:
npm run dev
-
Acesse a aplicação em
http://localhost:3000.
O middleware garante que:
- Apenas usuários autenticados podem acessar o dashboard.
- Usuários não autenticados são redirecionados para
/login.
Configuração em middleware.ts.
LoginForm: Componente para autenticação de usuários.LogoutButton: Botão que encerra a sessão do usuário.AuthContext: Contexto de autenticação que gerencia o estado do usuário e fornece funções de login/logout.Dashboard: Componente separado responsável por:- Buscar e gerenciar os dados agregados dos sensores.
- Exibir gráficos interativos utilizando a biblioteca Recharts.
- Permitir a seleção de diferentes intervalos de tempo para filtragem dos dados.
- Mostrar métricas como a média dos valores dos sensores e o total de amostras.
Dashboard.tsx: Contém a lógica de estado, chamadas à API e a interface do usuário para o dashboard.
Após seguir os passos de instalação, execute a aplicação em modo de desenvolvimento:
npm run devAcesse http://localhost:3000 no seu navegador para utilizar a aplicação.