In Active Development

Voyager — Soziale Reiseplattform

Jede Reise erzählt eine Geschichte. Voyager erweckt diese Geschichten zum Leben, Halt für Halt.

FlutterRiverpod.NET CoreSignalRPostgreSQLAWS S3FirebaseObjectBox
Das Problem

Das Teilen von Reisen ist kaputt. Ein Foto auf Instagram, ein Pin auf Google Maps, eine Nachricht auf WhatsApp — aber nirgendwo wird die Geschichte einer Reise mit der Tiefe erzählt, die sie verdient. Jeder Halt, jede Fahrt, jedes Budget-Detail ist Teil dieser Geschichte. Bestehende Apps bieten entweder Foto-Dumps oder Karten-Pins. Der Raum dazwischen — die eigentliche Textur einer Reise — geht verloren.

Die Lösung

Voyager ist eine soziale Plattform, die Reisen Halt für Halt erzählt. Jeder Halt trägt seine eigenen Fotos, Beschreibungen und Kontext. Die Fahrt zwischen den Halten — 13 Transportmodi vom Bus bis zum Helikopter — ist Teil der Geschichte. Budgetverfolgung in mehreren Währungen, Echtzeit-Chat, und wenn Sie eine Route sehen, die Ihnen gefällt? Forken Sie sie, machen Sie sie zu Ihrer eigenen.

Screenshot 1
Screenshot 2
Architektur & Entscheidungen

Flutter Mobile-Client, ASP.NET Core Backend, PostgreSQL-Datenbank und AWS S3 Medienspeicher. Echtzeit-Kommunikation über SignalR, Offline-Daten über ObjectBox.

System architecture diagram

Warum Offline-First-Architektur?

Die besten Halte sind oft dort, wo es kein Signal gibt. Ich habe eine benutzerdefinierte Datenhydrationslogik mit ObjectBox aufgebaut, damit die App auch bei Verbindungsabbrüchen reibungslos funktioniert.

Warum S3 Presigned URLs?

Anstatt Medien-Uploads über den Server zu leiten, lasse ich Clients direkt auf S3 hochladen. Dies reduzierte die Server-Rechenkosten um 70%.

Warum zusammensetzbare Datenschutzschichten?

Zwei unabhängige Datenschutzschichten: Kontoebene (öffentlich/privat) und Reiseebene (öffentlich/nur Follower/privat). Zusammengesetzt ist eine öffentliche Reise auf einem privaten Konto nur für genehmigte Follower sichtbar.

Feature-Highlights

Halt-für-Halt Reiseerzählungen

Jeder Halt trägt seine eigenen Fotos, Beschreibungen und Mediengalerie. Fahrtdetails zwischen den Halten — 13 Modi einschließlich Bus, Zug, Flugzeug, Fahrrad, sogar Helikopter — sind ein integraler Teil der Geschichte.

Reise-Forking

Forken Sie eine Route, die Sie lieben, passen Sie Halte an, ändern Sie Daten und Budget. Der Link zum Original bleibt bestehen und bildet Entdeckungsketten. Kein separates Vorlagensystem nötig — jede Reise ist von Natur aus eine Vorlage.

Echtzeit-Chat

Niedrige Latenz bei Direkt- und Gruppennachrichten über SignalR. Teilen Sie Reisen in Gesprächen, mit Lesebestätigungen und Zustellstatus.

Offline-Modus

Offline-First-Architektur mit ObjectBox. Reisedetails und Karten ohne Verbindung anzeigen — denn die besten Halte sind manchmal abseits des Netzes.

Herausforderungen & Lektionen

Komplexität der Offline-Datenhydration

Die größte Herausforderung war die Konsistenz der Offline-Daten. Wenn ein Benutzer offline einen neuen Halt hinzufügt, Fotos hochlädt und dann wieder online kommt — müssen alle Änderungen in der richtigen Reihenfolge ohne Konflikte mit dem Server synchronisiert werden.

Zusammensetzung der Datenschutzschichten

Die Zusammensetzung zweier unabhängiger Datenschutzschichten (Konto und Reise) erzeugte eine Matrix, die bei jeder Abfrage korrekt überprüft werden musste. Besonders beim Forking — 'kann dieser Benutzer diese Reise forken?' hängt von der Konto-Privatsphäre, der Reise-Sichtbarkeit UND dem Follow-Status ab.

Ergebnisse & Auswirkungen
V1 Ausgeliefert

Voll funktionsfähige mobile App in Produktion bereitgestellt

70%

Reduzierung der Server-Rechenkosten durch S3 Presigned URLs

13

Unterstützte Transportmodi — vom Gehen bis zum Helikopter

Sauberer Neuaufbau

Voyager Reborn — von Grund auf neu architekturiert mit erweitertem Umfang