Skip to content

Latest commit

 

History

History
173 lines (135 loc) · 10.6 KB

File metadata and controls

173 lines (135 loc) · 10.6 KB

F-Card Proje Yol Haritası (Project Roadmap) - Flutter Geçiş Rehberi

Bu belge, mevcut Android uygulamasının (com.ziadoua.zcard) tüm temel özelliklerini, işlevlerini, veri modellerini ve platform entegrasyonlarını özetler. Bu analiz, uygulamanın Flutter ile yeniden yazılması sürecinde rehberlik etmesi amacıyla hazırlanmıştır.


1. Veritabanı Şeması ve Veri Modelleri

Uygulama yerel verileri saklamak için bir SQLite veritabanı kullanmaktadır. Flutter geçişinde benzer bir ilişkisel yapı için sqflite veya alternatif olarak Isar / Hive kullanılabilir.

A. Kartlar Tablosu (LoyaltyCardDbIds)

Her sadakat kartının bilgilerini tutan ana tablodur.

Sütun Adı Veri Tipi (SQLite) Açıklama
id INTEGER (PK, AI) Kartın benzersiz kimliği
store TEXT (Not Null) Kartı veren mağaza / marka adı
note TEXT (Not Null) Kartla ilgili kullanıcı notu
valid_from INTEGER Geçerlilik başlangıç tarihi (Timestamp)
expiry INTEGER Son kullanma tarihi (Timestamp)
balance TEXT (Default '0') Kart bakiyesi veya puanı (Hassasiyet kaybını önlemek için metin olarak saklanır)
balance_type TEXT Bakiye türü (Para birimi simgesi veya puan tipi)
header_color INTEGER Kart başlığı için özel renk değeri (ARGB)
card_id TEXT (Not Null) Barkod içeriği veya kart numarası
barcode_id TEXT İkincil barkod veya kart kimliği
barcode_type TEXT Barkod formatı (Örn: QR_CODE, EAN_13)
star_status INTEGER (Default 0) Favori durumu (1: Favori, 0: Normal)
last_used INTEGER (Default 0) Kartın en son kullanıldığı zaman (Timestamp)
zoom_level INTEGER (Default 100) Kart görüntülenirken kullanılacak varsayılan parlaklık/yakınlaştırma yüzdesi
archive_status INTEGER (Default 0) Arşiv durumu (1: Arşivlenmiş, 0: Aktif)

B. Gruplar (Kategoriler) Tablosu (LoyaltyCardDbGroups)

Kartları kategorize etmek için kullanılan gruplar.

  • id (TEXT, PK): Grup/Kategori adı (Benzersiz).
  • order (INTEGER, Default 0): Grupların sıralama düzeni.

C. Kart-Grup İlişki Tablosu (LoyaltyCardDbIdsGroups)

Kartlar ve gruplar arasındaki Çoktan-Çoka (Many-to-Many) ilişkiyi yönetir.

  • cardID (INTEGER): Kart ID'si.
  • groupID (TEXT): Grup ID'si (Adı).
  • Primary Key: (cardID, groupID)

D. FTS Arama Tablosu (LoyaltyCardDbFTS)

Hızlı ve esnek metin araması için SQLite FTS4 sanal tablosu kullanılır. store ve note alanları üzerinde indeksleme yapar.


2. Temel Ekranlar ve İşlevsellikler

1. Ana Panel / Dashboard (MainActivity)

Uygulamanın başlangıç ekranıdır ve kullanıcının kartlarını listeler.

  • Sekmeli Arayüz (Tabs): Kartlar, tanımlanan gruplara (kategorilere) göre sekmeler halinde filtrelenebilir.
  • Arama Fonksiyonu: FTS veritabanı kullanılarak mağaza adı ve notlar arasında hızlı arama yapılır.
  • Sıralama Seçenekleri:
    • Sıralama Kriterleri: Alfabetik (Alpha), Son Kullanılanlar (LastUsed), Son Kullanma Tarihi (Expiry).
    • Sıralama Yönü: Artan (Ascending), Azalan (Descending).
  • Çoklu Seçim Modu (Action Mode): Kartlara uzun basılarak birden fazla kart seçilebilir ve toplu işlemler yapılabilir:
    • Toplu silme.
    • Toplu arşivleme / arşivden çıkarma.
    • Toplu grup ataması.
  • Dışarıdan Paylaşım Alımı: Başka bir uygulamadan veya galeriden F-Card'a görsel paylaşıldığında otomatik olarak barkod analizi ve kart ekleme ekranı açılır (Intent.ACTION_SEND entegrasyonu).

2. Kart Görüntüleme Ekranı (LoyaltyCardViewActivity)

Seçilen kartın barkodunu ve detaylarını gösteren ekrandır.

  • Yüksek Çözünürlüklü Barkod Çizimi: ZXing kütüphanesi entegrasyonu ile 13 farklı barkod türü desteklenir:
    • Desteklenen Barkodlar: Aztec, Code 39, Code 93, Code 128, Codabar, Data Matrix, EAN 8, EAN 13, ITF, PDF 417, QR Code, UPC A, UPC E.
  • Kart Fotoğrafları: Kartın ön (front) ve arka (back) yüzünün fotoğrafları arasında geçiş yapılabilir. Resme tıklandığında tam ekran galeri görünümü açılır.
  • Ekran Parlaklığını Maksimize Etme: Barkodun fiziksel tarayıcılar tarafından kolay okunabilmesi için kart açıkken ekran parlaklığı otomatik olarak %100 yapılır (kullanıcı ayarına bağlı olarak).
  • Ekranı Açık Tutma (Wakelock): Kart görüntülenirken ekranın kararması veya kapanması engellenir.
  • Kilit Ekranı Üzerinde Gösterme: Kart kilit ekranı açıkken veya cihaz kilitliyken bile görüntülenebilir (ayarlardan aktifleştirildiyse hızlı erişim sağlar).
  • Bakiye Güncelleme: Bakiye alanına dokunularak hızlıca puan veya bakiye güncelleme penceresi açılır.
  • Kartlar Arası Geçiş: Alt kısımda yer alan sonraki/önceki butonları veya kaydırma hareketleri ile listedeki diğer kartlara hızlıca geçiş yapılabilir.

3. Kart Ekleme ve Düzenleme Ekranı (LoyaltyCardEditActivity)

Kart oluşturma veya mevcut kart bilgilerini düzenleme ekranıdır.

  • Görsel Ekleme & Kırpma:
    • Kameradan kart resmi çekme veya galeriden yükleme (Ön yüz, Arka yüz ve Özel ikon).
    • Yüklenen resimleri kırpma (UCrop entegrasyonu).
  • Renk Algılama ve Seçimi:
    • Kart görselinden/ikonundan otomatik tema rengi çıkarma.
    • Renk paletinden veya özel renk seçiciden kart başlık rengi belirleme.
  • Akıllı Tarih Seçiciler: Geçerlilik Başlangıcı ve Son Kullanma tarihleri için Material Date Picker entegrasyonu.
  • Hata Önleme ve Doğrulama:
    • Kart numarası veya barkod tipi değiştirildiğinde kullanıcıya uyarı gösterilir (tarayıcılarda okunmama riskine karşı).
    • Kaydedilmemiş değişiklikler varken geri çıkılmaya çalışıldığında onay iletişim kutusu gösterilir.

4. Barkod Tarama ve Manuel Seçim (ScanActivity & BarcodeSelectorActivity)

Kamera ile fiziksel kart barkodunu tarama işlevidir.

  • Kameradan Tarama: ZXing barkod tarayıcı motoru ile gerçek zamanlı tarama ve flaş desteği.
  • Görselden Barkod Tarama: Galeriden seçilen bir fotoğraftaki barkodu otomatik analiz ederek çözme (getBarcodeFromBitmap).
  • Barkodsuz Kart Ekleme: Barkodu olmayan kartlar için sadece resim ve isim ile kart oluşturabilme.
  • Manuel Giriş: Barkod formatını listeden seçip, kart numarasını elle yazarak kart ekleme.

5. Kategori ve Grup Yönetimi (ManageGroupsActivity & ManageGroupActivity)

Kullanıcının kartlarını gruplara ayırmasını ve düzenlemesini sağlar.

  • Kategori Sıralama: Kategorilerin listedeki yerini yukarı/aşağı butonlarıyla değiştirme.
  • Kategori Düzenleme Ekranı:
    • Grup adını değiştirme (isim çakışması kontrolü ile).
    • Bu grup altındaki kartları listeleme ve onay kutularıyla (Checkbox) kartları gruba hızlıca dahil etme/çıkarma.

3. Veri Aktarımı ve Yedekleme (ImportExportActivity)

Uygulama, veri kaybını önlemek ve başka cihazlara geçişi kolaylaştırmak için gelişmiş içe/dışa aktarım özelliklerine sahiptir.

  • Dışa Aktarma (Export):
    • Veritabanı kayıtları ve kart resimlerini bir araya getirerek şifreli bir ZIP dosyası oluşturur.
    • Kullanıcı dışa aktarmadan önce şifre belirler ve zip dosyası bu şifreyle şifrelenir.
  • İçe Aktarma (Import):
    • Yerel F-Card yedeklerini (ZIP, JSON veya CSV formatında) geri yükleme.
    • Şifreli ZIP dosyaları için parola sorma.
  • Rakip Uygulamalardan Geçiş Desteği: Uygulama, diğer popüler sadakat kartı uygulamalarının veri yedeklerini çözüp F-Card formatına dönüştürebilir:
    • Stocard yedekleri içe aktarma desteği (StocardImporter).
    • Fidme yedekleri içe aktarma desteği (FidmeImporter).
    • VoucherVault yedekleri içe aktarma desteği (VoucherVaultImporter).
    • Catima yedekleri içe aktarma desteği (CatimaImporter).

4. Uygulama Ayarları (Settings)

Kullanıcının deneyimini kişiselleştirmesini sağlayan ayarlar şunlardır:

  1. Tema Ayarları:
    • Açık Tema / Koyu Tema / Sistem Varsayılanı.
    • OLED Siyah Teması: OLED ekranlarda güç tasarrufu sağlamak için tamamen siyah arka plan seçeneği.
    • Dinamik tema renkleri seçimi.
  2. Dil Seçimi: Sistem dilinden bağımsız olarak uygulama içi dil seçeneği (Locale override).
  3. Kart Ekranı Davranışları:
    • Barkod gösterilirken ekran parlaklığını maksimize etme (Açık/Kapalı).
    • Ekran yönü kilidi (Sistem yönü, Dikey veya Yatay kilit).
    • Kart açıkken ekranın açık kalmasını sağlama (Açık/Kapalı).
    • Cihaz kilitliyken kart gösterimine izin verme (Açık/Kapalı).
  4. Gizlilik ve Güvenlik:
    • Kart verilerini üçüncü taraf uygulamalara Content Provider aracılığıyla açma/kapatma izni.

5. Platform Entegrasyonları (Android'e Özgü)

Flutter sürümünde bu entegrasyonlar platform kanalları (Platform Channels) veya uygun paketlerle simüle edilmeli veya uygulanmalıdır.

  • Uygulama Kısayolları (App Shortcuts):
    • Ana ekrandaki uygulama ikonuna basılı tutulduğunda en son veya en sık kullanılan 3 karta doğrudan erişim sağlayan dinamik kısayollar oluşturur (ShortcutHelper).
  • Güç Menüsü / Hızlı Cihaz Denetimleri (ControlsProviderService):
    • Android 11+ cihazlarda, güç menüsünde veya hızlı ayarlar panelinde "Cihaz Denetimleri" (Device Controls) altında sadakat kartlarının listelenmesi ve kilidi açmadan karta hızlıca erişilmesi sağlanır.
  • İçerik Sağlayıcı (CardsContentProvider):
    • Uygulama veritabanındaki kart bilgilerini, okuma iznine (READ_CARDS) sahip diğer uygulamalara veya widget'lara güvenli bir şekilde sunar (Okuma amaçlı, salt okunur içerik sağlayıcı).

6. Flutter Geçişi İçin Paket Önerileri (Teknoloji Eşleştirmesi)

Mevcut Java/Android Yapısı Önerilen Flutter Paketi
SQLite (DBHelper) sqflite veya isar
Camera & ZXing Scanner mobile_scanner or qr_code_scanner
Barkod Oluşturma (ZXing Writer) barcode_widget
Resim Kırpma (UCrop) image_cropper
Ekran Açık Tutma (Wakelock) wakelock_plus
Parlaklık Kontrolü screen_brightness
Uygulama Kısayolları quick_actions
Şifreli ZIP İşlemleri archive veya flutter_archive
Tema ve Renk Çıkarımı palette_generator (Görselden renk alma)