- Go
- TypeScript
- Svelte
- deck.gl
- Mapbox GL
01/07Lissabon auf der Live-Karte im dunklen Theme: jeder Bus, jede Metro, jeder Zug und jede Fähre auf ihrer Linie, dazu die Haltestellen in der Nähe.
Über
Nexo nimmt die offenen Fahrpläne von 34 portugiesischen Betreibern, von Carris Metropolitana und Metro do Porto bis CP, Transtejo, den Stadtbussen der Algarve, FlixBus und BlaBlaCar, und zeigt das ganze Land auf einer Live-Karte: 51.954 Haltestellen, 457.045 Fahrten und 7.206 Linien.
Das Backend ist ein einzelnes Go-Binary. Offline liest es GTFS und NeTEx, gleicht fehlende Linienverläufe mit OpenStreetMap ab, misst 616.194 Fußwege zwischen Haltestellen und schreibt einen kompakten Snapshot. Online lädt es diesen Snapshot in unter einer Sekunde und beantwortet alles aus dem Speicher: einen RAPTOR-Planer, der eine Verbindung in etwa 35 ms liefert und gegen ein Orakel auf 480 echten Fahrten geprüft wurde (98,8 % optimal), Fahrzeugpositionen, Abfahrtstafeln, Isochronen und Echtzeitdaten aus GTFS-RT- und GBFS-Feeds.
Das Frontend ist Svelte 5 und TypeScript auf Mapbox GL und deck.gl, die Fahrzeugpositionen werden in einem Web Worker interpoliert, damit der Hauptthread frei bleibt. Drumherum: eine installierbare PWA, eine Landingpage mit funktionierender Warteliste und Nico, das X aus dem Logo, das lebendig wurde und dich ab dem ersten Tipp begleitet. Er fährt auch auf dieser Seite mit.
Funktionen
- Das ganze Land, live
- Jedes Fahrzeug dort, wo Fahrplan oder GPS es hinsetzen. Folgst du einer Linie, zeigt sie Live-Positionen mit Verspätung; der Rest gleitet ruhig, als Schätzung markiert. Zieh die Uhr auf jede Stunde und sieh das Netz atmen.
- Planer von Tür zu Tür
- RAPTOR über das ganze Land in etwa 35 ms. Jetzt, ab oder bis, Fußwege auf echten Straßen gemessen, Leihräder und Scooter für die erste Meile, Tarife, Barrierefreiheit und Live-Verspätungen.
- Wie weit komme ich
- Setze einen Pin und sieh alles, was du mit Öffis und zu Fuß erreichst, in 10-Minuten-Bändern, live verschiebbar, über den Tag abspielbar, oder finde den Treffpunkt für zwei Personen.
- Nico und die Caderneta
- Ein Sticker für jede Linie, Stempel für Haltestellen, Medaillen, Wochenmissionen und Level. Nico atmet, blinzelt, folgt deinem Zeiger, winkt dem Bus, eilt, wenn du spät dran bist, und schläft nach Mitternacht ein. Keine Konten: alles bleibt auf deinem Gerät.
- Ein Binary, ein kleiner Server
- API, Planer, Echtzeit und die eingebettete Web-App laufen in einem Go-Prozess auf einem VPS für 7,37 € im Monat. Jeder Push führt die Checks aus und liefert das Binary; antwortet die neue Version nicht auf den Health Check, rollt der Server selbst zurück.
- Ernsthaft getestet
- 219 Go-Testfunktionen, über 200 Vitest-Unit-Tests, Playwright End-to-End, axe-Audits, Screenshot-Vergleiche und Frame-Time-Budgets. Eine Änderung, die einen Hot Path um mehr als 10 % verlangsamt, kommt nicht rein.
API-Referenz
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /v1/plan | Pareto-optimale Verbindungen zwischen zwei Punkten, mit Filtern für Modus, Betreiber, Gehgeschwindigkeit und Umstiege |
| GET | /v1/reach | Isochrone: alle Haltestellen, die von einem Punkt aus in einer Zeitspanne erreichbar sind |
| GET | /v1/meet | Wohin zwei Personen beide gelangen, und wie lange jede braucht |
| GET | /v1/stops/{id}/departures | Nächste Abfahrten einer Haltestelle oder eines Bahnhofs, über Betriebstage hinweg |
| GET | /v1/vehicles/segments | Kompakter Binärstrom der Fahrzeugbewegungen für einen Kartenausschnitt und ein Zeitfenster |
| GET | /v1/lines | Liniengeometrie, nebeneinander versetzt, wo Linien sich eine Straße teilen |