Problem

Şehirde sakin, kalabalık olmayan bir yer bulmak istediğinde standart harita uygulamaları bu ihtiyacı karşılamıyor — hepsi popülerliğe göre sıralıyor, sessizliğe göre değil.

Çözüm

Sakinlik doğrudan ölçülebilen bir sinyal değil — telefonun mikrofonunu dinlemek de, gerçek zamanlı doluluk verisi satın almak da bu ürünün kapsamı dışındaydı. Onun yerine açıkça bir tahmin kurdum: her mekan türü kendi taban sakinlik puanını taşıyor (kütüphane ve bahçe en üstte, park ve müze ortada, kafe en altta), üstüne OpenStreetMap etiketlerinden gelen küçük düzeltmeler biniyor.

Ama listeyi belirleyen tek başına bu taban puan değil. Sıralama; seçtiğin ruh haline (Çalış / Dinlen / Yürü) göre değişen tür ağırlıklarını, sana olan uzaklığı, kullanıcıların gönderdiği kalabalık raporlarını ve "huzurlu" oylarını birlikte topluyor. Yani aynı şehirde, aynı anda, sadece ruh halini değiştirdiğinde liste baştan sıralanıyor — kütüphane "Çalış"ta öne çıkarken "Yürü"de kıyıya ve parka bırakıyor.

Bunun üstüne, bir mekana girdiğinde saat saat yoğunluk tahmini görüyorsun: bu tahmin de gerçek ölçüm değil, mekan türünün tipik yoğun saatlerinden türetiliyor ve arayüzde bir vaat gibi değil, bir öneri gibi sunuluyor.

Teknoloji

Expo / React Nativereact-native-maps OpenStreetMap OverpassNominatim Gömülü Çevrimdışı KatalogAsyncStorage

Öne Çıkan Detay

Ana ekran binlerce mekan kartını tek seferde çizmeye çalışınca iOS'un render motoru komple çöküyor, tüm pencere (tab bar dahil) beyaz kalıyordu. Kök neden navigasyonla değil, sınırsız listeleme render'ıyla ilgiliydi — sayfalama (40'lık gruplar + "Daha fazla göster") ekleyerek çözdüm. Buradan şunu öğrendim: sınırsız bir liste render'ı bazı platformlarda "yavaşlık" değil, komple boş ekran anlamına gelebiliyor.

Uygulama internetsiz de çalışıyor: mekan kataloğu uygulamanın içinde geliyor, canlı OpenStreetMap araması bunun üstüne ekleniyor. Arama başarısız olursa hata ekranı değil, "katalog gösteriliyor" uyarısı çıkıyor — çevrimdışılık bir arıza durumu değil, varsayılan çalışma modu.

Ekranlar

SakinNokta'nın Keşfet ekranı — günün öne çıkan sakin noktası ve sakinlik puanı halkası, saate göre öneri şeridi, canlı arama yerine katalog gösterildiğini bildiren durum satırı ve Çalış, Dinlen, Yürü ruh hali seçimi
Keşfet — ruh halini seç, sıralama ona göre değişsin.
SakinNokta'nın önerilen noktalar listesi — Türkiye ve Dünya bölge filtreleri, çalışma, doğa ve kamp tür filtreleri; her kartta sakinlik puanı, kullanıcıya uzaklık ve sakin/topluluk etiketleri
Liste — bölge ve tür filtreleri, her mekanın sakinlik puanı.
SakinNokta'da mekan detay ekranı — kapak fotoğrafı ve sakinlik puanı, yol tarifi düğmesi, şu an sakin durum çubuğu, sabahtan geceye renkli saatlik yoğunluk grafiği ve huzurlu oy sayacı
Detay — saat saat yoğunluk tahmini ve topluluk oyları.
SakinNokta'nın Harita sekmesi — haritada işaretli mekan, üzerine açılan yol tarifi baloncuğu ve altında bölge bazlı arama kutusu
Harita — bölgeyi ara, çıkan noktaları listene ekle.

Benzer bir problemi konuşalım

Kapsamı belirsiz bir ürün fikri ya da dijitalleşmesi gereken bir süreç varsa, bir e-posta yeterli.