preloader

OurSpots

Reiseplaner und Stellplatz-Logbuch fürs Wohnmobil

  • NestJS
  • React
  • Prisma
  • Leaflet
  • PWA
  • Docker
OurSpots

Wohnmobil-Reisen planen und die Stellplätze, auf denen man stand, so festhalten, dass man sie Jahre später wiederfindet. Entstanden, weil die üblichen Apps entweder die Maße des Fahrzeugs ignorieren oder genau dort aufhören, wo man sie braucht: ohne Netz.

Planen

Eine Reise bekommt Zeitraum, Fahrzeug und Zwischenziele, die sich per Karte, Adresssuche oder GPS setzen und frei sortieren lassen. Die Straßenroute rechnet OpenRouteService – mit den Maßen des Wohnmobils, also ohne Wege unter zu niedrigen Brücken oder über Straßen, die für das Gewicht gesperrt sind. Genau daran scheitern Autorouten in der Praxis.

Längere Touren lassen sich in Etappen zerlegen, die Reihenfolge der Ziele auf Wunsch optimieren (als Vorschlag, der erst auf Bestätigung übernommen wird), und das Ergebnis als GPX oder KML exportieren. Berechnete Routen werden zwischengespeichert – unveränderte kosten kein API-Kontingent.

Sammeln und auswerten

Stellplätze entstehen über die Karte oder per „Hier bin ich" in einem Zug: Standort, Name, Bewertung, Fotos. Dazu Art, Preis, Nächte, 18 Ausstattungsmerkmale und Notizen – einzelne davon als privat markierbar, die verlassen die App nie. Fotos werden nach EXIF-Auswertung serverseitig in drei WebP-Größen abgelegt und erst nach Zugriffsprüfung ausgeliefert.

Später ergibt das ein Reisetagebuch mit Kilometerständen, Tankungen samt errechnetem Verbrauch und Ausgaben nach Kategorien – ausgewertet je Reise, bis hinunter zu Kosten pro Tag und pro Kilometer.

Unterwegs ohne Netz

Die App ist als PWA installierbar. Offline erfasste Stellplätze und Fotos warten lokal und gehen los, sobald wieder Verbindung besteht; die Oberfläche zeigt dabei, wie viel noch aussteht. Kartenausschnitte lassen sich vorab laden.

Dass das gefahrlos funktioniert, ist eine Entwurfsentscheidung: IDs werden auf dem Client erzeugt (UUIDv7) und alle Schreibzugriffe laufen über PUT. Damit ist jede Zustellung wiederholbar – die Warteschlange darf nach einem Abbruch einfach noch einmal senden, ohne Dubletten anzulegen.

Technik

NestJS mit Prisma auf MariaDB im Backend, React mit Vite, Leaflet, TanStack Query und Dexie im Frontend. Die Zod-Schemas liegen in einem gemeinsamen Paket und sind die einzige Quelle für die Validierung: Das Frontend prüft damit seine Formulare, das Backend dieselben Daten noch einmal. Anmeldung über Authelia per OIDC, Reisen lassen sich für Mitreisende freigeben oder über einen widerrufbaren öffentlichen Link teilen.

← Alle Projekte