Skip to content

About

Análise de rotas logísticas com Algoritmo de Dijkstra e UX cinematográfica

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

13 Commits

Folders and files

Repository files navigation

SmartRoute Logo

Cálculo inteligente de rotas logísticas de menor custo entre capitais brasileiras.

JavaScript Vite Leaflet OSRM License


Sobre o Projeto

O SmartRoute é uma aplicação web voltada ao cálculo da rota de menor custo financeiro total (combustível e pedágios) entre as capitais estaduais brasileiras.

Com base na Teoria dos Grafos e no Algoritmo de Dijkstra, o sistema analisa a malha rodoviária e calcula a trajetória ótima considerando:

  • Preço do Combustível (R$/L) com formatação monetária dinâmica.
  • Autonomia do Veículo (Km/L).
  • Tarifas de Pedágio de cada capital intermediária percorrida.
  • Paradas Obrigatórias (Waypoints) com recálculo e integração automática de trechos.

A aplicação possui uma interface inspirada em princípios de Glassmorphism em modo escuro, com animações FLIP a 60 FPS, renderização geoespacial em tempo real e integração direta com serviços de navegação externa.


Principais Funcionalidades

  • Algoritmo de Dijkstra Otimizado: Fila de prioridade Min-Heap para determinação do caminho com o menor custo financeiro total.
  • Suporte a Parada Obrigatória (Waypoint): Definição de parada intermediária na rota Origem → Parada → Destino, contabilizando corretamente as tarifas de pedágio do percurso completo.
  • Recálculo em Tempo Real (Live Auto-Recalculate): Atualização automática da rota e da linha do tempo ao alterar parâmetros como origem, destino, parada, preço de combustível ou autonomia.
  • Visualização Geoespacial (Leaflet + OSRM): Renderização espacial com Leaflet.js e camada CartoDB Dark Matter. Os dados de geometria rodoviária são obtidos concorrentemente via API do projeto OSRM.
  • Modo Dashboard (Tela Cheia): Transição fluida entre visualização em formato de painéis e modo Dashboard em tela cheia com animações otimizadas para GPU.
  • Linha do Tempo Interativa: Exibição detalhada dos trechos com rolagem por atrito horizontal e menus de ação contextual em cada nó.
  • Atribuição Direta via Mapa: Seleção de cidades no próprio mapa interativo para definir Origem, Parada ou Destino.
  • Integração com GPS Externo: Geração de URLs de rota para abertura direta no Google Maps e Waze.
  • Limpeza de Campos: Mecanismo rápido para redefinição individual dos campos de entrada.

Arquitetura do Projeto

A solução segue os princípios de Orientação a Objetos (OOP) e modularidade em Vanilla JavaScript (ES Modules), priorizando desempenho, manutenibilidade e baixo uso de memória.

SmartRoute/
├── index.html                  # Estrutura principal e marcação semântica
├── package.json                # Configurações do projeto e scripts Vite
├── vercel.json                 # Configurações de deploy SPA na Vercel
├── public/                     # Recursos estáticos (Logotipo, Favicon, Vídeo)
└── src/
    ├── main.js                 # Ponto de entrada e inicialização dos módulos
    ├── assets/
    │   └── styles/
    │       └── main.css        # Estilos globais, Glassmorphic design e animações
    ├── components/             # Componentes de interface de usuário
    │   ├── Autocomplete.js     # Autocomplete com suporte a navegação por teclado
    │   ├── DrawerManager.js    # Gerenciamento de painéis retráteis
    │   ├── FuelInputFormatter.js # Formatação de valores de combustível
    │   ├── MapView.js          # Módulo de mapa Leaflet e requisições OSRM paralelas
    │   ├── TimelineView.js     # Componente da linha do tempo e rolagem horizontal
    │   └── Toast.js            # Notificações e mensagens de erro do sistema
    ├── constants/
    │   ├── coordinates.js      # Coordenadas geográficas das 27 capitais
    │   └── states.js           # Mapeamento de UFs e utilitários de busca
    ├── controllers/
    │   └── RouteController.js  # Orquestração entre UI, estado e serviços
    ├── core/                   # Estruturas de dados fundamentais
    │   ├── Graph.js            # Representação de grafo e algoritmo de Dijkstra
    │   └── MinHeap.js          # Estrutura de dados Min-Heap para fila de prioridade
    ├── data/
    │   └── capitais.json       # Base de dados oficial de conexões, distâncias e pedágios
    └── services/
        ├── NavigationService.js # Gerador de rotas para Google Maps e Waze
        └── RouteService.js     # Serviço de cálculo e processamento de trechos

Instalação e Execução

Pré-requisitos

  • Node.js (versão 18 ou superior).
  • npm ou yarn.

Procedimento de Execução

  1. Clonar o repositório:

    git clone https://github.com/gstvdc/SmartRoute.git
    cd SmartRoute
  2. Instalar as dependências:

    npm install
  3. Executar o ambiente de desenvolvimento:

    npm run dev

    Abra a URL exibida no terminal (por padrão: http://localhost:5173).

  4. Compilar para produção:

    npm run build

    Os artefatos compilados e minificados serão gerados no diretório dist/.

  5. Visualizar o build de produção:

    npm run preview

Aspectos Técnicos e Performance

  • Animações FLIP: As transições de layout em tela cheia utilizam a técnica First, Last, Invert, Play, reduzindo o custo computacional e garantindo taxa de quadros estável (60 FPS).
  • Requisições de Geometria em Paralelo: O processamento concorrente via Promise.all acelera o traçado vetorial no mapa.
  • Redimensionamento Otimizado: Utilização de ResizeObserver para recálculo exato da área de renderização do mapa em transições de layout.

Licença

Este projeto está licenciado sob a licença ISC.

About

Análise de rotas logísticas com Algoritmo de Dijkstra e UX cinematográfica

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages