Berke Özyaşar
Blog

Web sitesi ve mobil uygulama tek pakette: Skymar örneği

Skymar Lojistik için web sitesini, iOS ve Android uygulamasını, arka ucu ve mağaza yayınını tek elden geliştirdim. Tam paket bir projede nelere dikkat etmeli?

·
Skymar web sitesi ana sayfası

Bir lojistik firması dijital tarafını çoğu zaman parça parça kurar: web sitesini bir ekip yapar, mobil uygulama yıllar sonra başka bir ekibe verilir, ikisi arasındaki veri bağlantısı da sonradan çözülmeye çalışılır. Müşterimiz Skymar Lojistik için farklı bir yol izledik: kurumsal web sitesini, iOS ve Android müşteri uygulamasını, uygulamanın arka ucunu ve mağaza yayınını tek elden geliştirdim. Ben Berke Özyaşar; bu yazıda bu yaklaşımın neden işe yaradığını ve tam paket bir projede nelere dikkat ettiğimi Skymar örneği üzerinden anlatıyorum.

Paketin parçaları

  • Web sitesi: www.skymar.com.tr, Türkçe ve İngilizce. Deniz, hava, kara ve demir yolu taşımacılığı ile depolama sayfaları, talebi e-postayla ileten teklif formu, CBM hesaplayıcı, Incoterms 2023 rehberi, CV yüklemeli kariyer formu ve haberler. ASP.NET Web Forms ile IIS üzerinde çalışıyor.
  • Mobil uygulama: React Native 0.78 ile iOS ve Android için tek kod tabanı.
  • Arka uç: Node.js ve Express, Prisma ve SQL Server; anlık sohbet için Socket.IO, bildirimler için Firebase Cloud Messaging.
  • Personel ve yönetim ekranları: bildirim gönderme, kullanıcı ve işlem kaydı takibi, uygulama ayarları.
  • Mağaza yayını: Google Play ve App Store, Skymar'ın kendi hesaplarında.

Neden tek ekip

Site ve uygulama aynı firmanın iki yüzü; müşteri ikisini ayrı ürünler olarak değil, aynı firma olarak görüyor. Tek ekip çalıştığında birkaç somut fayda ortaya çıkıyor:

  • Tutarlı dil ve terimler: Web sitesinde FCL ya da HBL nasıl anlatılıyorsa uygulamada da aynı biçimde geçiyor. Türkçe ve İngilizce metinler iki tarafta aynı kararlarla hazırlanıyor.
  • Tek muhatap: Bir değişiklik hem siteyi hem uygulamayı etkiliyorsa firmanın iki ayrı tedarikçiyi koordine etmesi gerekmiyor.
  • Arka uç kararları baştan veriliyor: Uygulamanın hangi veriye hangi yetkiyle erişeceği, bildirimlerin hangi olaylarda gideceği ve belgelerin nasıl sunulacağı en başta planlanıyor.
  • Yayın ve bakım tek takvimde: Mağaza güncellemeleri, sunucu değişiklikleri ve site içerikleri aynı planın parçası oluyor.

Ortak bir arka uç

Paketin merkezinde mobil uygulamanın konuştuğu arka uç var. Uygulama veritabanına doğrudan bağlanmıyor; Node.js ve Express ile yazdığım API kimlik doğrulaması yapıyor ve her müşteriye yalnızca kendi sevkiyatlarını, belgelerini ve faturalarını dönüyor. Veri erişiminde Prisma kullandım, veriler SQL Server'da duruyor. Bu katman uygulamanın arayüzünü veri yapısından ayırıyor: ileride yeni bir ekran ya da başka bir istemci eklendiğinde aynı API üzerinden çalışabilir, yetkilendirme de tek noktadan yönetilir.

Müşteri uygulamasında ne var

Sevkiyatlar Rezervasyon, Yolda ve Vardı sekmelerine ayrılıyor; müşteri aradığı yükü B/L, konteyner numarası ya da kendi referansıyla buluyor. Sevkiyat kartından HBL ve fatura belgelerine geçiliyor. Faturalar ödeme durumuna ve tarih aralığına göre filtreleniyor, indirilip paylaşılabiliyor. Lojistikte müşterilerin sık sorduğu iki soru var: "yüküm nerede" ve "faturam ne durumda". Uygulamanın ana ekranları bu iki soru etrafında kuruldu.

Bildirimler ve sohbet

Firebase Cloud Messaging ile gemi varışı, yeni mesaj ve fatura için anlık bildirim gidiyor. Bildirim gönderilecek olayları dar tutmak önemli; her küçük değişiklikte bildirim alan kullanıcı sonunda bildirimleri kapatıyor. Sohbet tarafında müşteri, temsilcisine uygulama içinden fotoğraf, belge ve sesli mesaj gönderebiliyor; mesajlar Socket.IO ile anlık iletiliyor. Sohbetin uygulamada olması, e-posta ve telefon arasında dağılan yazışmaları sevkiyat bilgisiyle aynı yerde topluyor.

Personel ekranları

Uygulamanın bir de personel tarafı var. Yetkili kullanıcılar tüm müşterilere ya da tek bir kullanıcıya görselli bildirim gönderebiliyor, aktif kullanıcıları ve işlem kayıtlarını izleyebiliyor, alt menüdeki sekmeleri ve sohbet düğmelerini açıp kapatabiliyor. Bu son özellik küçük görünse de pratik: bir bölüm geçici olarak kapatılmak istendiğinde mağazaya yeni sürüm göndermek gerekmiyor.

Mağaza yayını müşterinin hesabında

Uygulama Google Play'de ve 23 Haziran 2026'dan bu yana App Store'da, Skymar'ın kendi geliştirici hesaplarıyla yayında. Bu tercih uygulamanın mağazada firmanın adıyla görünmesini ve hesabın firmada kalmasını sağlıyor. Yayın için gizlilik politikası, hesap silme talebi ve çocuk güvenliği sayfalarını da hazırladım. Mağaza incelemesinin istediği bu tür sayfaları web tarafıyla birlikte planlamak, tek ekip çalışmanın bir başka kolaylığı.

İki dil, iki platform

Hem site hem uygulama Türkçe ve İngilizce. React Native ile yazılan tek kod tabanı iOS ve Android sürümlerini birlikte besliyor; bir özellik eklendiğinde iki platformda aynı anda yayına girebiliyor. Arka uç ortak olduğu için iki platformdaki müşteri de aynı veriyi görüyor.

Tam paket bir projeyi nasıl planlıyorum

Site, uygulama ve arka uç aynı projede olduğunda işin sırası önem kazanıyor. Genel yaklaşımım şöyle:

  • Önce veri ve yetki: Müşterinin hangi sevkiyatı, belgeyi ve faturayı göreceği, personelin hangi işlemleri yapacağı netleşmeden ekran tasarlamıyorum.
  • Sonra arka uç: API ve bildirim altyapısı kurulduğunda uygulama gerçek veriyle geliştirilebiliyor.
  • Site ve uygulama paralel: Web sitesi arka uca bağımlı olmadığı için uygulama geliştirilirken o da ilerleyebiliyor; terimler ve metinler iki tarafta birlikte yazılıyor.
  • Mağaza hazırlığı baştan: Firmanın geliştirici hesapları, gizlilik metinleri ve inceleme için demo hesap geliştirmeyle aynı anda hazırlanıyor; böylece uygulama hazır olduğunda yayın beklemiyor.

Tek paket ne zaman mantıklı

  • Firmanın web sitesi yenilenecekse ve mobil uygulama da gündemdeyse
  • Uygulamanın göstereceği veri firmanın mevcut sisteminden geliyorsa ve bu bağlantının bir kez, doğru kurulması gerekiyorsa
  • Firmanın içinde site, uygulama ve sunucuyu koordine edecek bir yazılım ekibi yoksa

Yalnızca bir web sitesi ya da yalnızca bir uygulama gerekiyorsa elbette parçalar ayrı ayrı da yapılabilir; tek paket bir zorunluluk değil, koordinasyon yükünü azaltan bir seçenek.

Benzer projeler

Lojistik firmalarının müşterileri için daha önce Buzmavi ve Mitlog uygulamalarını geliştirmiştim; ikisi de App Store ve Google Play'de firmaların kendi hesaplarıyla yayında. Skymar bu deneyimi web sitesi, arka uç ve personel ekranlarıyla birlikte tek pakete taşıdı. Mobil taraf için mobil uygulama geliştirme, site tarafı için kurumsal web sitesi geliştirme sayfalarında nasıl çalıştığımı anlattım.

Diğer yazılar

Uygulamanızı birlikte yayınlayalım.

Ne yapmak istediğinizi birkaç cümleyle anlatın. Aynı gün dönüş yapıyorum.

Gezinmek için ↑ ↓, açmak için Enter, kapatmak için Esc