Uma frota em movimento. Cada comando tem um caminho de volta.
Simulador de frota em tempo real entregue como um único binário Go. Os veículos simulados conversam com um broker embutido como clientes MQTT reais.
O produto
Fleet Pulse é um simulador de locação e leasing entregue em um único binário Go. Clientes MQTT reais representam veículos simulados; o mapa e a carteira mostram telemetria, contratos e estados dos comandos.
- Go
- React
- TypeScript
- PostgreSQL
- MQTT
- SSE
- Leaflet
O fluxo principal
Dispositivos publicam telemetria
Os veículos simulados conectam ao broker mochi-mqtt embutido como clientes reais e percorrem uma biblioteca versionada de rotas da Grande São Paulo.
O navegador acompanha a frota
HTTP fornece o snapshot inicial. SSE com buffer entrega telemetria, comandos e saídas de área; clientes lentos podem perder eventos antigos.
O visitante envia um comando de porta
Travar e destravar aceitam Idempotency-Key e retornam HTTP 202 com identificador. O veículo recebe o comando MQTT e confirma.
O comando termina
PENDING → SENT → ACKED, FAILED ou TIMEOUT. O prazo é de cinco segundos a partir de SENT; a fila por veículo é limitada.
Arquitetura
Dispositivos MQTT simulados ↔ broker embutido ↔ ingestão / máquina de comandos
React + Leaflet ↔ API HTTP → PostgreSQL + cache de estado
Hub SSE → navegador · build React → go:embed → binário Go único
Um processo, limites explícitos
HTTP da biblioteca padrão, MQTT embutido, simulador, máquina de comandos, hub SSE e assets React rodam em um processo Go.
Carteira durável, comandos transitórios
O PostgreSQL guarda a carteira e as últimas posições, com cache de estado em memória. Comandos de porta da locação e stream são perdidos ao reiniciar. Não há histórico de posições.
Disponibilidade e limites
Veículos, rotas e contratos são simulados. Não há autenticação: visitantes compartilham a demonstração e podem executar suas ações. Sem réplicas, histórico de posições ou controle de veículos reais. O relógio acelerado da simulação é separado dos timestamps reais da telemetria.