Luís Peixoto
Ativo

Nexo

Todos os autocarros, comboios e barcos de Portugal. Um mapa.

Abrir Nexo
  • Go
  • TypeScript
  • Svelte
  • deck.gl
  • Mapbox GL

01/07Lisboa no mapa ao vivo, no tema escuro: cada autocarro, metro, comboio e barco na sua linha, e as paragens por perto.

Sobre

O Nexo pega nos horários abertos de 34 operadores portugueses, da Carris Metropolitana e do Metro do Porto à CP, à Transtejo, aos autocarros urbanos do Algarve, à FlixBus e à BlaBlaCar, e serve o país inteiro num só mapa ao vivo: 51 954 paragens, 457 045 viagens e 7 206 linhas.

O backend é um único binário Go. Offline, lê GTFS e NeTEx, ajusta ao OpenStreetMap os traçados que faltam, mede 616 194 caminhos a pé entre paragens e escreve um snapshot compacto. Online, carrega esse snapshot em menos de um segundo e responde a tudo a partir da memória: um planeador RAPTOR que devolve uma viagem em cerca de 35 ms e foi verificado contra um oráculo em 480 viagens reais (98,8% ótimas), posições dos veículos, quadros de partidas, isócronas e tempo real vindo de feeds GTFS-RT e GBFS.

O frontend é Svelte 5 e TypeScript sobre Mapbox GL e deck.gl, com as posições dos veículos interpoladas num Web Worker para o thread principal ficar livre. À volta: uma PWA instalável, uma landing page com lista de espera a funcionar, e o Nico, o X do logo que ganhou vida e te faz companhia desde o primeiro toque. Também está a viajar por esta página.

Funcionalidades

O país inteiro, ao vivo
Cada veículo onde o horário ou o GPS o põe. Segue uma linha e ela passa a posições em tempo real, com o atraso; o resto desliza com calma, marcado como estimado. Arrasta o relógio para qualquer hora e vê a rede a respirar.
Planeador de porta a porta
RAPTOR sobre o país inteiro em cerca de 35 ms. Sair agora, sair às ou chegar até, caminhadas medidas em ruas reais, bicicletas e trotinetes partilhadas no primeiro troço, tarifas, acessibilidade e atrasos ao vivo.
Até onde chego
Larga um pino e vê tudo o que alcanças de transportes e a pé em faixas de 10 minutos, arrasta-o ao vivo, vê-o ao longo do dia, ou descobre onde duas pessoas se encontram a meio caminho.
O Nico e a Caderneta
Um cromo por cada linha em que viajas, carimbos das paragens, medalhas, missões da semana e níveis. O Nico respira, pisca, segue o teu cursor, acena ao autocarro, corre quando estás atrasado e adormece depois da meia-noite. Sem contas: fica tudo no teu dispositivo.
Um binário, um servidor pequeno
API, planeador, tempo real e a app web embebida correm num só processo Go, num VPS de 7,37 € por mês. Cada push corre as verificações e envia o binário; se a nova versão não responder ao health check, o servidor volta atrás sozinho.
Testado a sério
219 funções de teste em Go, mais de 200 testes unitários Vitest, Playwright ponta a ponta, auditorias axe, comparação de capturas e orçamentos de tempo por frame. Uma alteração que abrande um caminho quente mais de 10% não entra.

Referência API

MétodoCaminhoDescrição
GET/v1/planViagens ótimas de Pareto entre dois pontos, com filtros de modo, operador, velocidade a pé e transbordos
GET/v1/reachIsócrona: todas as paragens ao alcance a partir de um ponto dentro de um tempo
GET/v1/meetOnde duas pessoas conseguem chegar, e quanto tempo demora cada uma
GET/v1/stops/{id}/departuresPróximas partidas de uma paragem ou estação, entre dias de serviço
GET/v1/vehicles/segmentsStream binário compacto dos movimentos dos veículos numa área e janela de tempo
GET/v1/linesGeometria das linhas, lado a lado onde partilham a mesma rua