Unsere Urlaubstabelle hat ausgedient – der Urlaubsplaner

Teilen
Unsere Urlaubstabelle hat ausgedient – der Urlaubsplaner

Unsere Urlaubstabelle hat ausgedient

Jedes Jahr dasselbe Spiel: Irgendwann im Winter sitzen wir zusammen und überlegen, wohin es mit dem Wohnwagen gehen soll. Ostern, Pfingsten, der große Sommerurlaub, vielleicht noch ein paar Tage im Herbst. Bisher landete das alles in einer Tabelle, und die ist über die Jahre ganz schön gewachsen. Ein Blatt für den Kalender, eins pro Reise mit Etappen, Campingplätzen, Preisen, Anzahlungen und Fährzeiten. Dazu Formeln, die nur noch funktionierten, solange niemand eine Zeile einfügte.

Und dann kamen die Fragen, auf die die Tabelle keine Antwort hatte:

  • Passt das Gespann auf dieser Route überhaupt durch, oder schickt uns das Navi über einen Pass, den man mit 2,5 m Breite lieber meidet?
  • Wann ist die Restzahlung für den Platz am Gardasee fällig?
  • Wie viele Urlaubstage verbrauchen wir eigentlich, wenn wir Freitag nach Feierabend losfahren?
  • Und wie bekommen Oma und Opa mit, wann wir wo sind, ohne dass ich jedes Mal einen Screenshot schicke?

Also habe ich mir eine eigene kleine Web-App gebaut: den Urlaubsplaner. Er läuft bei uns auf dem eigenen Server und der Code liegt offen auf GitHub. Wer ebenfalls mit Wohnwagen oder Wohnmobil unterwegs ist und einen Server hat, kann ihn also einfach selbst nutzen.

Alle Bilder in diesem Beitrag zeigen eine erfundene Familie „Muster“ aus Kiel mit ausgedachten Reisen. Unsere echten Pläne bleiben privat. 😉

Das ganze Jahr auf einen Blick

Der Einstieg ist die Jahresübersicht. Hier stehen alle Reisen des Jahres mit Urlaubszeitraum, Urlaubstagen, Zielen und Kosten. Hinter jedem Ziel zeigt ein farbiges Etikett, wie weit wir mit der Buchung sind: angefragt, gebucht, angezahlt oder bezahlt. So sehe ich sofort, wo noch etwas zu tun ist.

Darunter folgen die Hinweise: Etappen ohne berechnete Route, Nächte ohne Buchung und bald fällige Restzahlungen. Die Tabelle hätte das nie von selbst gemeldet.

Jahresübersicht mit allen Reisen, Buchungsstatus und Hinweisen

Wichtig war mir die Unterscheidung zwischen Urlaub und Reisezeit. Der Urlaub ist die Zeit, die wir uns freinehmen, inklusive Packen und Auspacken. Die Reisezeit ist die Zeit, in der wir mit dem Gespann tatsächlich unterwegs sind. Beginnt die Reise an einem Arbeitstag vor dem Urlaub, erkennt die App das als „Abfahrt nach Feierabend“. Die Urlaubstage rechnet sie selbst aus: Montag bis Freitag, ohne die Feiertage unseres Bundeslands.

Eine Reise im Detail

Jede Reise hat ihre eigene Seite: Etappen mit Abfahrt, Pause, Fahrzeit und Ankunft, die Buchungen der Campingplätze und alle weiteren Kosten wie Fähre, Vignette oder Maut. Dazu kommen nützliche Links, etwa zur Platzreservierung oder zur Fähre.

Ganz oben ist eine Karte mit dem kompletten Routenverlauf, wahlweise mit OpenStreetMap oder TomTom-Karten. Die Plätze sind nach Art eingefärbt: Urlaubsziel, Zwischenübernachtung oder Fährhafen.

Reiseseite mit Karte und Routenverlauf zum Gardasee

Das Schöne ist: Fast alles, was früher eine Formel war, rechnet die App selbst aus. Dazu gehören Nächte, Ankunftszeiten, Dieselkosten nach Strecke und Verbrauch, Summen in Euro (auch bei Preisen in Fremdwährung), Anzahlung und Rest. Bei einer Buchung trage ich einfach den Preis pro Nacht oder den Gesamtpreis ein, den Rest erledigt der Urlaubsplaner.

Etappen, Buchungen mit Status und Kosten einer Reise

Routen, die zum Gespann passen

Das war für mich das Herzstück. Ein Gespann aus Zugfahrzeug und Wohnwagen ist eben kein Pkw. In einem Fahrzeugprofil hinterlege ich Länge, Breite, Höhe, Gewicht, Achsen und Höchstgeschwindigkeit. Ein Klick auf „Route berechnen“ fragt dann bei TomTom eine Route an, die genau diese Maße berücksichtigt.

Auf Wunsch meidet die Route vignettenpflichtige Straßen, und Fähren werden mitgedacht. Am Ende stehen für jede Etappe Entfernung, Fahrzeit und die durchfahrenen Länder fest. Die Ankunftszeit ergibt sich aus Abfahrt, Fahrzeit und Pause.

Eingetragen wird in einer aufgeräumten Verwaltungsoberfläche mit Datums- und Uhrzeitfeldern. Neue Etappen werden sinnvoll vorbelegt: Die nächste Etappe startet dort, wo die letzte aufgehört hat.

Eingabe der Etappen mit Datum, Abfahrt, Pause und Orten

Der Urlaubskalender – jetzt als PDF

Seit Jahren hängt bei uns ein Jahreskalender an der Wand, in dem alle Urlaube, Feiertage und Schulferien eingetragen sind. Den erzeugt der Urlaubsplaner jetzt per Knopfdruck als PDF in A4 quer, mit Monatsfarben, Feiertagen, Schulferien und unseren Urlauben.

Die Schulferien holt sich die App aus der OpenHolidays API, für alle Bundesländer. Das Abtippen hat damit ein Ende.

Der Jahreskalender als PDF mit Feiertagen, Schulferien und Urlauben

Außerdem gibt es pro Reise ein PDF und eine Excel-Datei (mit echten Formeln!). Alle Dokumente tragen Datum und Uhrzeit des Stands, damit man weiß, wie aktuell der Ausdruck am Kühlschrank ist.

Im Google Kalender

Damit die Urlaube auch im Familienkalender auf dem Handy landen, gibt es ein Kalender-Abo. Ich füge einen geheimen Link einmal in Google Kalender (oder Apple Kalender, Outlook) ein, und ab dann erscheint jede Reise automatisch als Termin über den ganzen Urlaub.

Als Ort steht dort der Hauptort der Reise mit Adresse. Das ist der Platz mit den meisten Nächten, Zwischenübernachtungen und Fähren zählen nicht mit. Ändert sich etwas an der Planung, zieht der Kalender nach.

Teilen mit Oma und Opa

Ein Wunsch, der schnell kam: Die Großeltern wollen wissen, wo wir gerade sind. Dafür gibt es Links mit Ablaufdatum. Eine Reise oder den ganzen Jahreskalender kann ich per WhatsApp, E-Mail oder über das Teilen-Menü des Handys verschicken. Die Empfänger brauchen keine Anmeldung, sehen alles nur lesend, und ich kann den Link jederzeit beenden.

Einen Link für Oma und Opa erstellen

Dabei achtet die App auf unsere Privatsphäre. Das Zuhause wird in der geteilten Ansicht nie gezeigt, die Route beginnt erst einige Kilometer entfernt. Kosten sind nur zu sehen, wenn ich das ausdrücklich möchte.

So sieht die geteilte Reise für die Empfänger aus – ohne Zuhause

Auch unterwegs auf dem Handy

Unterwegs schaue ich natürlich vor allem auf dem Handy rein: Wann müssen wir los, wie lange ist die Etappe, wie heißt der Platz und was kostet er? Die Seiten passen sich an kleine Bildschirme an, die Karte inklusive.

Reiseseite auf dem Handy
Karte auf dem Handy

Erinnerungen per Mail

Und damit nichts durchrutscht, verschickt der Urlaubsplaner E-Mails:

  • wenn eine Restzahlung fällig wird,
  • bei eigenen Erinnerungen wie „Fähre ab 1. März buchbar“,
  • und 14 Tage vor der Abfahrt mit einem Reisecheck: Sind alle Nächte gebucht, alle Routen berechnet, alle Zahlungen erledigt?

Mehrere Familien, ohne Passwort

Der Urlaubsplaner kann mehrere Familien verwalten. Jede sieht nur ihre eigenen Reisen und Plätze, hat ihr eigenes Bundesland für Feiertage und Schulferien und kann einen eigenen TomTom-Schlüssel hinterlegen. So könnten zum Beispiel befreundete Camper die gleiche Installation mitnutzen.

Die Anmeldung läuft ohne Passwort: E-Mail-Adresse eingeben, Link im Postfach anklicken, fertig.

Ein bisschen Technik

Für die Technik-Interessierten:

  • Django 5.2 mit Python 3.12 und PostgreSQL, alles in Docker Compose
  • Oberfläche mit klassischen Django-Templates, ganz ohne JavaScript-Framework
  • Karten mit Leaflet, Kartenkacheln von OpenStreetMap oder TomTom (über den Server geholt, damit der API-Schlüssel nicht im Browser landet)
  • TomTom Routing API mit Fahrzeugmaßen; der kostenlose Entwicklerzugang reicht für eine Familie locker aus
  • PDFs mit WeasyPrint, Excel mit openpyxl
  • Feiertage aus dem Python-Paket holidays, Schulferien aus der OpenHolidays API
  • Tägliches Backup von Datenbank und Konfiguration, Aufbewahrung 14 Tage
  • Über hundert automatische Tests, darunter einige, die sicherstellen, dass keine Familie die Daten einer anderen sieht

Bei uns läuft das Ganze auf einem kleinen Hetzner-Server hinter Nginx mit Let's-Encrypt-Zertifikat.

Gebaut mit Claude Code

Ein Wort noch zur Entstehung: Den Urlaubsplaner habe ich zusammen mit Claude Code entwickelt, dem KI-Programmierassistenten von Anthropic. Es war mein erstes Projekt damit. Ich habe beschrieben, was ich brauche, und Claude hat Code, Tests und Doku geschrieben, auf dem Server ausprobiert und auf meine Rückmeldungen reagiert.

Rückmeldungen gab es reichlich: „Die Etappennummer brauche ich nicht“, „Der Kalender bitte immer in A4“, „Die Community sollte unser Zuhause nicht sehen“. Das hat erstaunlich gut funktioniert und deutlich mehr Spaß gemacht, als ich erwartet hatte.

Selbst ausprobieren

Der Code steht unter der MIT-Lizenz auf GitHub:

👉 github.com/schluppy/urlaub

Im README steht die Installation Schritt für Schritt. Mit dem Befehl beispieldaten legt man sich eine Beispielfamilie „Muster“ mit ein paar Reisen an und kann sofort losklicken. Nötig sind Docker, ein Reverse Proxy für HTTPS, ein Mailkonto und ein kostenloser TomTom-Schlüssel.

Und jetzt entschuldigt mich, ich muss noch die Fähre für den Sommer buchen. Der Urlaubsplaner hat mich gerade daran erinnert. 🚐

Weiterlesen