In Active Development

Voyager — Sosyal Seyahat Platformu

Her yolculuk bir hikaye anlatır. Voyager, bu hikayeleri durağa durağa yaşatır.

FlutterRiverpod.NET CoreSignalRPostgreSQLAWS S3FirebaseObjectBox
Problem

Seyahat paylaşımı kırık. Instagram'da bir fotoğraf, Google Maps'te bir pin, WhatsApp'ta bir mesaj — ama hiçbir yer bir yolculuğun hikayesini hak ettiği derinlikte anlatmıyor. Her durak, her ulaşım şekli, her bütçe detayı o hikayenin parçası. Mevcut uygulamalar ya fotoğraf dökümü ya da harita pini sunuyor. İkisi arasındaki boşluk — yani yolculuğun gerçek dokusu — kaybolup gidiyor.

Çözüm

Voyager, yolculukları durağa durağa anlatan bir sosyal platform. Her durak kendi fotoğraflarına, açıklamalarına ve bağlamına sahip. Duraklar arasındaki ulaşım — otobüsten helikoptere 13 farklı ulaşım modu — hikayenin parçası. Çoklu para birimi bütçe takibi, gerçek zamanlı sohbet, ve bir rota beğendiniz mi? Fork'layın, kendi versiyonunuzu oluşturun. Her yolculuk doğal olarak bir şablon.

Screenshot 1
Screenshot 2
Mimari & Kararlar

Flutter mobil istemci, ASP.NET Core backend, PostgreSQL veritabanı ve AWS S3 medya depolama. Gerçek zamanlı iletişim SignalR ile, çevrimdışı veri ObjectBox ile.

System architecture diagram

Neden Çevrimdışı Öncelikli Mimari?

En güzel duraklar genellikle şebekenin olmadığı yerlerde. ObjectBox ile özel veri hidrasyon mantığı kurarak, bağlantı koptuğunda bile uygulamanın sorunsuz çalışmasını sağladım.

Neden S3 Presigned URL'ler?

Medya yüklemelerini sunucudan geçirmek yerine, istemcilerin doğrudan S3'e yüklemesini sağladım. Bu sunucu hesaplama maliyetlerini %70 azalttı.

Neden Birleştirilebilir Gizlilik Katmanları?

Hesap seviyesinde (herkese açık/gizli) ve yolculuk seviyesinde (herkese açık/takipçilere özel/gizli) iki bağımsız gizlilik katmanı. Birleştirildiğinde, gizli hesaptaki herkese açık yolculuk bile sadece onaylı takipçilere görünür.

Öne Çıkan Özellikler

Durağa Durağa Yolculuk Anlatımı

Her durak kendi fotoğraflarına, açıklamalarına ve medya galerisine sahip. Duraklar arasındaki ulaşım detayları — otobüs, tren, uçak, bisiklet, hatta helikopter dahil 13 mod — hikayenin ayrılmaz bir parçası.

Yolculuk Forklama

Beğendiğiniz bir rotayı forklayın, durakları özelleştirin, tarihleri ve bütçeyi ayarlayın. Orijinaline bağlantı kalır, keşif zincirleri oluşur. Ayrı bir şablon sistemi yok — her yolculuk doğal olarak bir şablon.

Gerçek Zamanlı Sohbet

SignalR ile düşük gecikmeli bireysel ve grup sohbeti. Sohbet içinde yolculuk paylaşımı, okundu bilgisi ve teslim durumu.

Çevrimdışı Mod

ObjectBox ile çevrimdışı öncelikli mimari. Yolculuk detaylarını ve haritaları bağlantı olmadan görüntüleyin — çünkü en güzel duraklar bazen şebekenin dışında.

Zorluklar & Dersler

Çevrimdışı Veri Hidrasyon Karmaşıklığı

En büyük zorluk, çevrimdışı verilerin tutarlılığını sağlamaktı. Kullanıcı çevrimdışıyken yeni durak eklerse, fotoğraf yüklerse ve sonra tekrar çevrimiçi olursa — tüm bu değişikliklerin doğru sırada, çakışma olmadan sunucuyla senkronize edilmesi gerekiyordu. Delta senkronizasyon mantığını sıfırdan yazdım ve en zor kısım çakışma çözümleme stratejisini belirlemekti.

Gizlilik Katmanlarının Birleşimi

İki bağımsız gizlilik katmanının (hesap ve yolculuk) birleştirilmesi, her sorguda doğru şekilde kontrol edilmesi gereken bir matris oluşturdu. Özellikle forklama sırasında — 'bu kullanıcı bu yolculuğu forklayabilir mi?' sorusu hem hesap gizliliğine hem yolculuk görünürlüğüne hem de takip durumuna bağlı. İlk implementasyonda bazı edge case'leri kaçırdım ve bunu ancak kapsamlı test senaryolarıyla yakaladım.

Sonuçlar & Etki
V1 Teslim Edildi

Tam işlevsel mobil uygulama prodüksiyon ortamına dağıtıldı

%70

S3 presigned URL'ler ile sunucu hesaplama maliyeti azaltması

13

Desteklenen ulaşım modu — yürüyüşten helikoptere

Temiz Yeniden Yazım

Voyager Reborn — genişletilmiş kapsamla sıfırdan yeniden mimari