Este projeto é uma aplicação de dashboard interativo desenvolvida para a monitorização e controlo em tempo real de uma embarcação elétrica. O sistema permite visualizar métricas essenciais de desempenho, gerir a navegação com um mapa interativo e configurar diversas preferências do sistema, tudo numa interface moderna e responsiva.
- Exibe informações vitais num piscar de olhos, incluindo velocidade (KPH), RPM do motor, percentagem da bateria e velocidade do vento.
- Utiliza medidores gráficos (gauges) para uma visualização clara e intuitiva dos dados.
- Apresenta um mapa interativo que utiliza Leaflet para visualização.
- Planeamento de Rota: Permite adicionar pontos de passagem (
waypoints) diretamente no mapa para criar uma rota. - Acompanhamento em Tempo Real: Exibe a posição atual da embarcação com um marcador que indica a direção (
heading). - Telemetria via MQTT: Durante uma viagem ativa, os dados de telemetria (coordenadas, velocidade) são publicados em tempo real para um broker MQTT, permitindo o acompanhamento remoto.
- Uma página dedicada para monitorizar detalhadamente o estado da bateria, incluindo percentagem de carga, voltagem e temperatura.
- Painel de configurações que permite personalizar a experiência do utilizador.
- Opções incluem a alteração de tema (claro/escuro) e idioma (inglês/português), com as preferências a serem guardadas localmente.
- Frontend: React, Vite
- Roteamento: React Router
- Gestão de Estado: React Context API
- Mapa: Leaflet, React-Leaflet, Leaflet Routing Machine
- Comunicação em Tempo Real: Paho MQTT
- Internacionalização: i18next
- Containerização: Docker, Nginx
/src
/assets # Imagens, logos e outros recursos estáticos
/components # Componentes React reutilizáveis (HomePage, SettingsPage, etc.)
/context # Contextos React para gestão de estado (SensorData, Settings, etc.)
/locales # Ficheiros de tradução (JSON)
/utils # Funções utilitárias (formatação, cálculos, etc.)
App.jsx # Componente principal da aplicação e estrutura de rotas
main.jsx # Ponto de entrada da aplicação
i18n.js # Configuração da internacionalização
Siga os passos abaixo para executar o projeto localmente.
- Node.js (versão 18 ou superior)
- npm (ou pnpm/yarn)
git clone https://github.com/seu-usuario/dashboard-embarcacao-eletrica.git
cd dashboard-embarcacao-eletricanpm installnpm run devA aplicação estará disponível em http://localhost:5173.
Para o desenvolvimento local, o projeto obtém dados de uma API que, por sua vez, é alimentada por um script de simulação. O ficheiro main.py gera dados realistas de sensores (velocidade, RPM, bateria, etc.) e armazena-os numa base de dados SQLite, que serve de fonte para a API.
O projeto inclui um Dockerfile para facilitar o deployment em produção.
A partir da raiz do projeto, execute:
docker build -t dashboard-eletrico .docker run -d -p 8080:80 dashboard-eletricoA aplicação estará acessível em http://localhost:8080.