% if (is_user_authenticated()) {
% my $status = get_user_status(); % if ($status->{checked_in}) {
Hallo, <%= current_user()->{name} %>!

Du bist gerade eingecheckt in <%= $status->{train_type} %> <%= $status->{train_no} %> ab <%= $status->{station_name} %>. % if ($status->{timestamp_delta} < 3600) { undo Rückgängig % }

Bei Ankunft: Station auswählen zum Auschecken.

% my $is_after = 0; % for my $station (@{$status->{route_after}}) { % }
<%= $station %>
% } % else {
Hallo, <%= current_user()->{name} %>!

Du bist gerade nicht eingecheckt.

Stationen in der Umgebung:

% }

Letzte Fahrten

% for my $travel (get_user_travels(1)) { % if ($travel->{completed}) { % if ($travel->{rt_arrival}->epoch and $travel->{rt_departure}->epoch) { % } else { % } % } % } % } % else {

Travelynx erlaubt das Einchecken in Züge im Netz der Deutschen Bahn. So können die eigenen Fahrten später inklusive Echtzeitdaten und eingetragenen Servicemeldungen nachvollzogen und brennende Fragen wie „Wie viele Stunden habe ich letzten Monat im Zug vebracht?“ beantwortet werden.

Die Idee dazu kommt von Träwelling – im Gegensatz dazu gibt es hier keine Twitter-Anbindung und keine Leaderboards, sondern einfach nur Daten.

Travelynx ist ein kostenfreies, privat betriebenes Projekt ohne Verfügbarkeitsgarantie. Unangekündigte Downtimes oder eine kurzfristige Einstellung dieser Seite sind nicht vorgesehen, aber möglich. Wer mag, kann auch den Quelltext laden und eine eigene travelynx-Instanz aufsetzen.

% }
Datum Zug Strecke Dauer
<%= $travel->{sched_departure}->strftime('%d.%m.%Y') %> <%= $travel->{type} %> <%= $travel->{line} // $travel->{no} %> <%= $travel->{from_name} %> → <%= $travel->{to_name} %><%= ($travel->{rt_arrival}->epoch - $travel->{rt_departure}->epoch) / 60 %> min <%= sprintf('%.f', $self->get_travel_distance($travel->{from_name}, $travel->{to_name}, $travel->{route})) %>km timer_off