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.
- 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.
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
- Node.js (versão 18 ou superior).
- npm ou yarn.
-
Clonar o repositório:
git clone https://github.com/gstvdc/SmartRoute.git cd SmartRoute -
Instalar as dependências:
npm install
-
Executar o ambiente de desenvolvimento:
npm run dev
Abra a URL exibida no terminal (por padrão:
http://localhost:5173). -
Compilar para produção:
npm run build
Os artefatos compilados e minificados serão gerados no diretório
dist/. -
Visualizar o build de produção:
npm run preview
- 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.allacelera o traçado vetorial no mapa. - Redimensionamento Otimizado: Utilização de
ResizeObserverpara recálculo exato da área de renderização do mapa em transições de layout.
Este projeto está licenciado sob a licença ISC.
