Sofra QR
Restoranların marka, şube, kategori, ürün ve QR akışlarını yönettiği; misafire mobil menü, işletmeye web ve mobil yönetim yüzeyleri sunan ürün.
istersin?
Neden yaptım?
Problem
Basılı menüler güncel kalmıyor; fiyat, görsel ve bulunabilirlik değişiklikleri operasyon yükü yaratıyor. İşletme tarafında marka ve şube ayrımı, misafir tarafında ise hızlı ve sade bir menü deneyimi aynı veri modeli içinde çözülmeliydi.
Yaklaşım
Sistemi tek bir ekrana sıkıştırmak yerine ortak API etrafında dört yüzeye ayırdım: müşteri menüsü, web yönetim paneli, mobil yönetim uygulaması ve backend. Marka → şube → kategori → ürün sahipliği API katmanında doğrulanırken medya dosyaları ayrı bir obje depolama katmanında tutuluyor.
Parçalar değil,
veri akışı.
Her katman tek bir sorumluluğu taşıyor; ürün davranışı sınırların arasında kaybolmuyor.
Zor kısımlar.
Aynı API, farklı kullanıcı yüzeyleri
Müşteri menüsü yalnızca aktif ve gerekli veriyi okurken yönetim yüzeyleri CRUD, sıralama, medya ve yetki bilgisine ihtiyaç duyuyor. Public endpoint’leri korumalı yönetim akışlarından ayırarak sözleşmeyi her istemci için sade tuttum.
Çok kiracılı sahiplik zinciri
Bir ürünün yetkisi kategori, şube ve marka üzerinden kullanıcıya kadar uzanıyor. Bu zinciri controller’lara dağıtmak yerine tekrar kullanılabilir ownership middleware’leriyle API sınırında doğruladım.
Doğru iş için
doğru araç.
Domain modüllerini ince HTTP katmanları ve tipli servis/repository sınırlarıyla kurmak için.
Marka, şube, kategori ve ürün şemasını hızlı iterasyonlarla geliştirmek; ilişkileri uygulama seviyesinde açık tutmak için.
Birden fazla React yüzeyinde sunucu durumunu, yükleme/hata akışlarını ve yeniden sorgulamayı tek düzende yönetmek için.
Yoğun CRUD ve yönetim ekranlarını tutarlı bileşenlerle hızlıca kurmak için.
Aynı işletme akışlarını mobilde güvenli saklama, görsel seçme ve QR paylaşımı gibi cihaz yetenekleriyle sunmak için.
Web ve mobil istemcilerin ortak API’ye aynı kimlik modeliyle erişebilmesi için.
Ürün ve marka medyasını uygulama sunucusundan ve MongoDB’den bağımsız ölçeklemek için.
Öğrendiklerim.
Aynı ürünün müşteri ve işletme yüzeyleri farklı veri yoğunlukları ister; public API ile yönetim API’sini ayırmak iki tarafı da sadeleştirir.
Hiyerarşik sahiplik kontrolleri baştan modellenmediğinde her yeni kaynak yetki borcu üretir.
Medya dosyasını veritabanına yüklemek yerine referansını saklamak, depolama ve uygulama sorumluluklarını ayırır.