Skip to content

Fikirden App Store'a ve arkasındaki backend'e.

Mobil Uygulama Geliştirme

Mobil uygulamanı fikir aşamasından yayına, hatta yayından sonraki bakım ve geliştirme sürecine kadar uçtan uca kurarım. Bu yalnızca ekranda görünen arayüzü yapmak anlamına gelmez; uygulamanın iç mantığını, veri akışını, konuştuğu backend API’yi, veritabanını ve gerekli entegrasyonları birlikte düşünmek anlamına gelir. Kısacası kullanıcı uygulamayı açtığında gördüğü deneyimden, arka planda çalışan sunucu tarafına kadar bütün parçaların aynı amaç için uyumlu çalışmasını sağlarım.

Mobil uygulama projelerinde sık gördüğüm sorunlardan biri, işin farklı parçalarının birbirinden kopuk ilerlemesidir. Bir ekip arayüzü yapar, başka biri API’yi hazırlar, bir başkası veritabanını kurar; sonra sıra bu parçaları birleştirmeye gelince “aslında bu alan böyle dönmemeliydi”, “uygulama bu hatayı beklemiyordu”, “backend bunu desteklemiyor” gibi problemler ortaya çıkar. Ben iki tarafı da yaptığım için bu kopukluk en baştan azalır. Uygulama ile API arasındaki sözleşme net olur, veri modelleri gerçek kullanım senaryolarına göre tasarlanır ve production ortamında karşına çıkabilecek uç durumlar daha geliştirme aşamasında düşünülür.

Bir mobil uygulama yalnızca güzel görünen ekranlardan ibaret değildir; arka planda durumlar, geçişler, kurallar, veri bütünlüğü ve istisnalar vardır. Kullanıcı internet bağlantısını kaybedebilir, ödeme işlemi yarıda kalabilir, aynı butona iki kez basabilir, eski bir uygulama sürümü yeni API ile konuşmaya çalışabilir. Bunlar küçük detaylar gibi görünür ama “çalışıyor” denilen bir ürün ile gerçekten güvenilir bir ürün arasındaki fark çoğu zaman bu detaylarda saklıdır. Temiz veri modelleri, mantıklı durum yönetimi ve kenar durumların baştan ele alınması bu yüzden benim için lüks değil, işin temelidir.

Uçtan uca geliştirme: üç katman, tek sorumluluk

Bir mobil uygulamayı sağlıklı kurmak için üç ana katmanı birlikte düşünmek gerekir: arayüz, uygulama mantığı ve backend API. Bu katmanlardan biri zayıf tasarlanırsa diğerleri de bundan etkilenir. Güzel görünen ama yavaş çalışan bir uygulama da, güçlü backend’i olup kullanıcıyı yoran bir arayüz de başarılı sayılmaz. Benim yaklaşımım, bu üç katmanı birbirinden bağımsız parçalar gibi değil, aynı ürünün birbirini tamamlayan bölümleri gibi ele almaktır.

  • Arayüz (UI) — Kullanıcının gördüğü, dokunduğu, alışkanlık geliştirdiği kısımdır. Ekranların akıcı, anlaşılır, sezgisel ve platformun beklentilerine uygun olması gerekir. iOS ve Android kullanıcılarının alıştığı davranışlar her zaman aynı değildir; buton yerleşimi, geri dönüş davranışı, form kullanımı veya bildirim izinleri gibi detaylar deneyimi doğrudan etkiler. Tasarım tarafında da destek verebilirim; ihtiyaç varsa görsel dili, ekran akışlarını ve kullanıcı deneyimini birlikte kurgularız: tasarım.

  • Uygulama mantığı — Ekranlar arasındaki geçişler, durum yönetimi, form doğrulamaları, hata mesajları, çevrimdışı davranış, oturum yönetimi ve kullanıcı etkileşimleri bu katmanda yer alır. Kullanıcı bir işlemi başlattığında uygulamanın ne göstereceği, işlem başarısız olursa nasıl toparlanacağı, bağlantı geri geldiğinde verinin nasıl senkronize edileceği burada belirlenir. Bu katman ne kadar temiz kurulursa uygulama da o kadar bakımı kolay ve genişletilebilir olur.

  • Backend API — Verinin yaşadığı, kuralların uygulandığı ve uygulamanın güvenilirliğini taşıyan katmandır. Kullanıcı hesapları, yetkilendirme, ödeme sonuçları, bildirimler, yönetim paneli ihtiyaçları ve üçüncü taraf servislerle iletişim çoğu zaman burada çözülür. Bu tarafın detaylarını ayrıca ele alıyorum: API geliştirme.

Bu üç katmanı tek elden kurduğumda aralarındaki iletişim doğal olarak sadeleşir. “Bunu backend tarafına soralım”, “tasarım buna göre değişsin”, “mobil taraf bunu beklemiyordu” gibi devir teslim gecikmeleri azalır. Kararlar daha hızlı alınır, teknik borç daha erken fark edilir ve ürünün ilk sürümü gereksiz karmaşaya boğulmadan ortaya çıkar.

Platformlar arası geliştirme: doğru yerde doğru teknoloji

Mobil uygulama geliştirirken her proje için aynı teknoloji kararını vermek doğru değildir. Çoğu iş fikri ve ürün için platformlar arası, yani tek kod tabanından hem iOS hem Android’e çıkabilen yaklaşım en mantıklı seçenektir. Bunun temel avantajı nettir: tek geliştirme süreci, tek bakım hattı, daha tutarlı davranış ve genellikle daha kontrollü maliyet. Özellikle MVP aşamasındaki ürünlerde, pazara daha hızlı çıkmak ve gerçek kullanıcıdan geri bildirim almak büyük avantaj sağlar.

Bu yaklaşım, “tek kodla her şey sihirli şekilde çözülür” demek değildir. Platformların kendi kuralları, izin sistemleri, mağaza beklentileri ve cihaz davranışları yine dikkate alınmalıdır. Bildirimler, kamera kullanımı, konum izinleri, dosya erişimi veya uygulama içi satın alma gibi alanlarda her platformun kendine özgü incelikleri olabilir. Ben platformlar arası geliştirmeyi seçtiğimde bile bu farkları yok saymam; uygulamanın iOS’ta iOS gibi, Android’de Android gibi hissettirmesi için gerekli ayrıntılara dikkat ederim.

Bazı projelerde ise native geliştirme daha doğru olabilir. Performansın çok kritik olduğu, cihaz donanımına derin erişim gereken veya platforma özel ileri özelliklerin merkezde olduğu uygulamalarda native seçeneğini ayrıca değerlendiririz. Buradaki karar modaya, kişisel teknoloji hevesine veya “herkes bunu kullanıyor” cümlesine göre verilmez. Projenin gerçek ihtiyacına, bütçesine, bakım beklentisine ve ürünün büyüme planına göre verilir.

Backend, veritabanı ve entegrasyonlar

Bir mobil uygulama çoğu zaman tek başına çalışan kapalı bir kutu değildir. Kullanıcı hesabı açar, giriş yapar, verisini kaydeder, ödeme yapar, bildirim alır, sipariş verir, randevu oluşturur, içerik yükler veya başka sistemlerle konuşur. Bütün bu akışların güvenilir çalışması için sağlam bir backend gerekir. Uygulama ne kadar iyi görünürse görünsün, arka taraf zayıfsa kullanıcı bunu çok hızlı hisseder: işlem tamamlanmaz, veri kaybolur, ekranlar tutarsızlaşır veya destek yükü artar.

Backend tarafında temiz API tasarımı, doğru veritabanı modeli ve sürdürülebilir servis yapısı kurarım. Veritabanı tarafında çoğu projede PostgreSQL gibi güçlü ve güvenilir çözümleri tercih ederim; ancak seçim yine projenin ihtiyacına göre yapılır. Önemli olan yalnızca veriyi saklamak değil, verinin ilişkilerini, bütünlüğünü ve ileride nasıl büyüyeceğini doğru düşünmektir. Bugün basit görünen bir “kullanıcı” tablosu, yarın roller, abonelikler, işlem geçmişi, bildirim tercihleri ve raporlama ihtiyaçlarıyla genişleyebilir. Model baştan dikkatsiz kurulursa her yeni özellik gereksiz sancılı hale gelir.

Entegrasyonlarda da aynı özeni gösteririm. Ödeme sistemleri, e-posta servisleri, SMS sağlayıcıları, harita servisleri, analitik araçları veya üçüncü parti API’ler uygulamanın kritik parçalarına dönüşebilir. Özellikle ödeme ve webhook gibi akışlarda idempotency, yani aynı işlemin yanlışlıkla iki kez çalışmasını önleme gibi detayları atlamam. Kullanıcı ödeme butonuna iki kez basabilir, ödeme sağlayıcısı aynı bildirimi tekrar gönderebilir, bağlantı kopup geri gelebilir. Bu durumlarda sistemin sakin kalması, veriyi bozmaması ve kullanıcıyı mağdur etmemesi gerekir. Bunlar geliştirme sırasında küçük teknik ayrıntılar gibi görünür ama production’da ürünün güvenilirliğini belirler.

Yayına hazırlık: App Store ve Play Store süreci

Mobil uygulamanın kodunun bitmesi, projenin gerçekten bittiği anlamına gelmez. Uygulamanın App Store ve Play Store’a doğru şekilde hazırlanması ayrı bir süreçtir. Uygulama kimliği, paket adı, ikonlar, ekran görüntüleri, açıklama metinleri, yaş derecelendirmeleri, gizlilik bilgileri, izin açıklamaları ve mağaza ayarları dikkatli yönetilmelidir. Bu aşamada yapılan küçük bir eksik, yayının gecikmesine veya uygulamanın reddedilmesine neden olabilir.

Store hesabı kurulumu, uygulama kaydı, sürüm hazırlığı ve yükleme sürecinde destek veririm. Onay sürecinde sık karşılaşılan ret sebeplerini bildiğim için baştan daha dikkatli ilerlerim. Gizlilik politikası eksikliği, gereksiz izin isteme, izin gerekçesinin belirsiz olması, içerik kurallarına uyumsuzluk veya test hesabı bilgilerinin sağlanmaması gibi konular mağaza incelemelerinde sorun çıkarabilir. Bunları son dakikada panikle çözmek yerine, ürün yayına hazırlanırken birlikte ele almak daha sağlıklıdır.

Yayın sonrasında da iş bitmez. Kullanıcı geri bildirimleri gelir, cihazlara özel hatalar görülebilir, yeni işletim sistemi sürümleri uyumluluk gerektirebilir veya iş modeli değiştikçe yeni özellikler eklenir. Bu yüzden uygulamayı yalnızca “teslim edilip unutulacak” bir paket gibi değil, yaşayan bir ürün gibi ele alırım.

Neden benimle çalışmalısın

  • Uygulama ve API’yi birlikte kurarım — Mobil taraf ile backend aynı bakış açısıyla tasarlanır. Veri formatları, hata cevapları, yetkilendirme, versiyonlama ve edge-case davranışları baştan uyumlu olur. Bu da hem geliştirme sürecini hızlandırır hem de sonradan çıkan sürprizleri azaltır.

  • Mühendislik disipliniyle düşünürüm — Karmaşık görünen problemleri parçalara ayırır, veri modellerini sadeleştirir ve mantıksal tutarlılığı önemserim. Bir özelliğin yalnızca mutlu senaryoda değil, hatalı ve eksik durumlarda da nasıl davranacağını düşünürüm.

  • MVP odağıyla ilerlerim — İlk sürümde her şeyi yapmaya çalışmak çoğu zaman ürünü ağırlaştırır. Önce en küçük çalışan ürünü netleştirir, gerçek kullanıcıyla test edilebilir hale getirir, sonra gelen veriye ve geri bildirime göre büyütürüz. Böylece zaman ve bütçe, varsayımlara değil öğrenmeye hizmet eder.

  • Dürüst kapsam belirlerim — Gereğinden fazla mühendislik, erken aşama ürünler için ciddi bir yük olabilir. Her ihtimale karşı karmaşık sistemler kurmak yerine, bugün gerekli olanı sağlam ve genişleyebilir şekilde yapmayı tercih ederim. Ne gerekiyorsa onu öneririm; gerekmeyeni de açıkça söylerim.

Çalışma modeli

İşe önce fikri, hedef kullanıcıyı ve temel akışları netleştirerek başlarız. Uygulama ne yapacak, ilk sürümde hangi özellikler mutlaka olmalı, hangileri sonraya bırakılabilir, hangi platformlarda yayınlanacak, backend tarafında hangi veriler tutulacak, hangi entegrasyonlar gerekecek — bunları birlikte konuşuruz. Bu aşamanın amacı, belirsizliği azaltmak ve gerçekçi bir MVP kapsamı çıkarmaktır.

Kapsam netleştikten sonra sana anlaşılır bir teklif sunarım. Proje bazlı teslim modeliyle çalışabiliriz; yani belirlenen kapsam için planlı bir geliştirme süreci yürütürüz. İhtiyacın daha uzun solukluysa sürekli geliştirme, bakım ve destek modeli de kurabiliriz. Yayın sonrasında hata düzeltmeleri, küçük iyileştirmeler, yeni özellikler, mağaza güncellemeleri ve teknik bakım konularında destek verebilirim.

Bir uygulama fikrin varsa, mevcut uygulamanı yenilemek istiyorsan ya da teknik olarak nereden başlaman gerektiğinden emin değilsen, kapsamı birlikte netleştirmek için bana yaz.

Sık sorulan sorular

iOS ve Android için ayrı ayrı mı yazıyorsun?

Genelde platformlar arası (cross-platform) bir yaklaşımla tek kod tabanından her iki platforma çıkıyorum — bu maliyeti ve bakım yükünü ciddi azaltır. Performansın kritik olduğu veya platforma özel derin özellik gerektiğinde native'i değerlendiririz. Kararı projenin gerçek ihtiyacına göre veririm.

Sadece uygulama mı, backend'i de yapıyor musun?

İkisini de. Uygulamanın arayüzü, mantığı ve konuştuğu backend API'yi birlikte kurarım. İki tarafı da aynı kişi yaptığı için 'sızdıran soyutlama' ve sürpriz uç durum olmaz — uygulama ve API düzgün oturur. API detayı: api geliştirme sayfası.

Mevcut bir uygulamaya özellik ekleyebilir misin?

Evet, ama önce mevcut kod tabanını incelerim. Temiz ve sürdürülebilirse doğrudan geliştiririm; teknik borç ağırsa, riskleri ve seçenekleri (refactor mu, devam mı) açıkça söylerim. Kör 'evet'lerden kaçınırım.

Uygulamayı App Store / Play Store'a sen mi yüklüyorsun?

Süreci yönetebilirim: store hesabı kurulumu, uygulama kimliği, ekran görüntüleri, açıklama ve yükleme. Onay sürecindeki ret sebeplerini de bilirim (gizlilik, izinler, içerik kuralları), bu yüzden ilk seferde geçme şansı yüksek olur.

Uygulama fikrim kabataslak, yine de çalışır mısın?

Evet — çoğu iyi ürün kabataslak başlar. Önce kapsamı netleştirir, MVP (en küçük çalışan ürün) ile başlamayı öneririm: gerçek kullanıcıyla test et, sonra veriye göre büyüt. Baştan her şeyi yapmak en pahalı ve en riskli yoldur.

Bakım ve güncelleme desteği veriyor musun?

Evet. İşletim sistemi güncellemeleri, hata düzeltmeleri, yeni özellikler — tek seferlik teslim de, sürekli bakım anlaşması da mümkün. Uygulama yayınlandıktan sonra da yanında olurum.

Aklında bir proje mi var?

Ne geliştirdiğini anlat. Genellikle bir gün içinde dönüş yaparım.

Projeye başla