← Todos os projetos

Projeto próprio · em produção

Trajecto+

Os horários do Metro do Porto no telemóvel, em 7 línguas e mesmo sem rede dentro do túnel. Uma app independente, que desenhei e mantenho de ponta a ponta: da interface aos pagamentos, da importação dos horários ao servidor.

trajectoplus.pt
Trajecto+

O problema

Os horários do metro fazem falta exatamente onde a rede falha: dentro do túnel. E no Porto há muitos turistas, que precisam deles na sua língua.

O que construí

Uma app instalável com as próximas partidas de cada estação, as linhas, um planeador de viagens com transbordos e um roteiro turístico com 31 pontos de interesse perto do metro, com mapa e fotografias. Está em 7 línguas: português, inglês, espanhol, francês, alemão, italiano e japonês.

Decisões

  • Horários no telemóvel. Os horários publicados pela Metro do Porto (GTFS) são validados antes de cada importação e guardados no telemóvel, por isso a app funciona sem rede. Até os comboios depois da meia-noite, que no GTFS aparecem como 24:xx, pertencem ao dia anterior e mostram a hora certa.
  • Mapas sem terceiros. O mapa do Porto é um recorte servido pelo próprio servidor, sem pedidos a serviços de mapas externos, e a localização nunca sai do telemóvel.
  • Pagamento dentro da app. Numa app instalada no iPhone, abrir o browser para pagar fazia perder a compra, por isso o checkout do Stripe abre dentro da app. Quem dá o passe é o webhook do Stripe, nunca o regresso do browser.
  • Passes que se somam. Comprar um passe antes de o anterior acabar não faz perder dias: o novo começa quando o outro termina.

Operação

Tudo corre em Docker, com Caddy a tratar do HTTPS. As imagens são construídas no GitHub Actions, nenhum deploy avança sem os testes passarem e, se a versão nova não responder, o servidor volta sozinho à anterior. A base de dados é copiada todos os dias às 03:00 e levada para uma NAS em casa, protegida por snapshots.

Tecnologia

React, TypeScript, Mantine e Leaflet no frontend, FastAPI no backend, MongoDB, Stripe, Docker, Caddy e GitHub Actions.

Tecnologias

  • React
  • TypeScript
  • FastAPI
  • MongoDB
  • Stripe
  • PWA