- 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étodo | Caminho | Descrição |
|---|---|---|
| GET | /v1/plan | Viagens ótimas de Pareto entre dois pontos, com filtros de modo, operador, velocidade a pé e transbordos |
| GET | /v1/reach | Isócrona: todas as paragens ao alcance a partir de um ponto dentro de um tempo |
| GET | /v1/meet | Onde duas pessoas conseguem chegar, e quanto tempo demora cada uma |
| GET | /v1/stops/{id}/departures | Próximas partidas de uma paragem ou estação, entre dias de serviço |
| GET | /v1/vehicles/segments | Stream binário compacto dos movimentos dos veículos numa área e janela de tempo |
| GET | /v1/lines | Geometria das linhas, lado a lado onde partilham a mesma rua |