Rovli Coffee
Sipariş, sadakat ve cüzdan uygulaması
Kahve müşterilerinin telefondan sipariş verip ödeme yapabildiği, cüzdanını ve sadakat avantajlarını takip edebildiği mobil uygulama.

- Kimler için?
- Kahve müşterileri ve işletme ekipleri
- Katkım
- Bağımsız proje · Full-stack geliştirme
Çözülmesi gereken ihtiyaç
Müşterinin sipariş ve ödeme deneyimi; işletmenin menüsü, POS sistemi, sadakat programı ve cüzdan işlemleriyle tutarlı çalışmalı.
Ortaya çıkan işlevler
Sipariş verme, kart veya cüzdanla ödeme yapma ve sadakat indirimlerini kullanma; işlemleri işletmenin kasa sistemiyle birlikte yürütme.
Ben ne yaptım?
Mobil uygulama ve sunucu tarafında sipariş, ödeme, cüzdan ve sadakat akışlarını geliştirdim. Müşterinin uygulamadaki işlemlerini işletmenin kasa sistemiyle bağladım.
Uygulama ekranları
Menüden kasaya, sadakatten işletme yönetimine: bir bölüm seç, Rovli deneyimini gerçek uygulama ekranlarıyla keşfet.
Geliştirme ayrıntılarını incele
Teknik yaklaşımla ilgilenenler için: çalışma akışı, kullandığım teknolojiler ve uygulama kararları.
Süreç nasıl işliyor?
Sipariş, ödeme sağlayıcısı, POS ve sadakat aynı işlemin farklı parçaları. Kart ve cüzdan yolları ayrılıyor; zaman aşımında işlem durumu ayrıca uzlaştırılıyor.
Ana akış
Menüyü ve seçenekleri keşfet
Flutter istemcisinde ürünler ve varyantlar seçilir; Simpra menü eşleştirmeleri sipariş verisine bağlanır.
Sepeti ve indirimi hazırla
Ürün seçenekleri ve indirimler siparişin tutarlı bir anlık görüntüsünde tutulur.
Ödeme yöntemini seç
Kart ödemesi VakıfBank 3D Secure yoluna; cüzdan ödemesi bakiye rezervasyonuna ayrılır.
3D Secure doğrulamasını başlat
Enrollment isteği hazırlanır ve müşteri banka doğrulama akışına geçer.
Banka sonucunu doğrula
Callback hash kontrolü ve authorization ile ödeme sonucu doğrulanır.
Siparişi POS’a ilet
Simpra ürün / varyant eşleştirmeleriyle check oluşturulur ve indirim bilgileri aktarılır.
Sipariş ve ödemeyi tutarlı kaydet
PostgreSQL transaction, satır kilitleme ve idempotency tekrarlanan isteklerin aynı işlemi çoğaltmasını önler.
Cüzdan ve sadakat akışını bağla
Sipariş sonucu mobil istemciye, cüzdan hareketlerine ve sadakat özelliklerine bağlanır.
Alternatif ve destek süreçleri
Cüzdanla ödeme
- Bakiyeyi rezerve et
Sipariş için cüzdan bakiyesi kontrol edilir ve tutar rezerve edilir.
- Sipariş yoluna geç
Rezerve tutarla POS adımına devam edilir. POS sonucu alındığında rezervasyon tamamlanır veya serbest bırakılır.
Sağlayıcı hatası veya zaman aşımı
- İşlem durumunu uzlaştır
Ödeme / POS sonucunu idempotency bilgisiyle kontrol ederek belirsiz durumu ele al.
- Yeniden dene veya telafi et
Retry worker’ları, iptal ve iade telafi adımları sipariş ile ödeme durumunu uzlaştırır.
Çözüm yaklaşımı
- Modüler Go/Fiber backend'i ve Flutter istemcisinde sipariş, cüzdan ve sadakat akışları geliştirdim; domain, application, infrastructure ve transport katmanlarını ayırdım.
- VakıfBank sanal POS ile sipariş ödemesi ve cüzdan yükleme entegrasyonu geliştirdim; 3D Secure enrollment, callback hash doğrulaması ve provizyon akışlarını uyguladım.
- Simpra POS ile menü/varyant eşleştirme, fiş oluşturma ve sadakat indirimi entegrasyonları geliştirdim; sağlayıcı hataları ve eşleştirme durumları için Go regresyon testleri yazdım.
- Ödeme ve cüzdan işlemlerinde PostgreSQL transaction, row locking ve idempotency kullandım; timeout, iptal/iade compensation ve retry worker akışları geliştirdim.
Teknolojiler
- Go
- Flutter
- PostgreSQL
- Redis
- S3
- 3D Secure
- Simpra POS
