# Raf Gezgini Proje Analiz ve Tasarım Raporu

Bu rapor, **Raf Gezgini** adlı mobil uygulamanın işlevsel gereksinimlerini, teknik mimarisini, veritabanı tasarımını ve iş modelini detaylandırmak amacıyla hazırlanmıştır. Başka profesyonellerle veya teknik ekiplerle paylaşılmaya uygun bir formatta tasarlanmıştır.

---

## 1. Proje Özeti (Executive Summary)
**Raf Gezgini**, son kullanıcıların market alışveriş süreçlerini dijitalleştirerek kolaylaştıran, fiyat karşılaştırması ve sosyal sepet paylaşımı sunan ücretsiz bir mobil uygulamadır. 

Kullanıcılar markette raftaki ürün barkodlarını okutarak sepetlerine ekleyebilir, fiyatları karşılaştırabilir ve sepetlerini aile bireyleriyle paylaşarak alışverişi optimize edebilirler. Son kullanıcılar için tamamen ücretsiz olacak bu sistem, ilerleyen süreçte marketlerin reklam, kampanya duyuruları ve öne çıkarma (doping) ödemeleri üzerinden gelir elde etmeyi hedeflemektedir.

---

## 2. Temel Modüller ve İşlevsel Özellikler

### A. Üyelik ve Profil Yönetimi
- **Bireysel Kullanıcı Üyeliği**: Telefon numarası, Google/Apple Auth veya E-posta ile hızlı kayıt ve giriş.
- **Aile/Grup Eşleşmesi**: Aile bireylerinin birbirleriyle sepet paylaşabilmesi için grup oluşturma (örn: "Ev Sepeti" grubu).

### B. Ürün ve Barkod Yönetimi
- **Barkod Tarayıcı (Barcode Scanner)**: Mobil cihaz kamerasıyla raf etiketindeki veya ürün üzerindeki barkodun (EAN-13, QR vb.) hızlıca taranması.
- **Otomatik Arka Plan Barkod Kaydı**: Taranan barkod sistemde yoksa, arka planda geçici olarak kaydedilir ve kullanıcıya hızlıca yeni ürün adı/fiyatı ekleme formu sunulur.
- **Kitle Kaynaklı (Crowdsourced) Veri Girişi**: Market ve ürün verilerinin doğruluğu ve güncelliği kullanıcılar tarafından desteklenir (Kullanıcılar yeni ürün/market ekleyebilir).

### C. Fiyat Karşılaştırma ve Konum Tabanlı Arama
- **Mesafe ve Konum Entegrasyonu**: Kullanıcı evindeyken aradığı bir ürünün en yakın hangi marketlerde olduğunu harita üzerinde ve mesafe bilgisiyle görebilir.
- **Fiyat Karşılaştırma**: Aynı ürünün farklı marketlerdeki güncel fiyat listesi, indirimler ve aktif kampanyalar listelenir.

### D. Akıllı Sepet ve Paylaşım Sistemi
- **Paylaşımlı Sepet (Shared Basket)**: Bir kullanıcının (örn. ev hanımı) evde sepet oluşturup bunu gruptaki diğer üyeyle (örn. eşiyle) paylaşması.
- **Market İçi Kontrol Listesi**: Markete giden kişi, sepetteki ürünleri rafta gördükçe barkodunu okutur. Barkodu okutulan ürün sepette otomatik olarak "Alındı" (Check) olarak işaretlenir. Bu sayede eksik ürün alma riski sıfırlanır.
- **Alt Toplam ve Hesaplama**: Sepete eklenen ürünlerin o marketteki fiyatlarına göre anlık alt toplam hesabı gösterilir.

---

## 3. Sistem Akış Şeması (Workflow)

```mermaid
graph TD
    A[Kullanıcı Evde / Markette] --> B{Ürün Barkodunu Oku}
    B -->|Sistemde Var| C[Sepete Ekle & Fiyatı Göster]
    B -->|Sistemde Yok| D[Arka Planda Barkodu Kaydet]
    D --> E[Kullanıcıya Hızlı Ürün Ekleme Ekranı Aç]
    E --> F[Ürün Kataloğuna Ekle]
    F --> C
    C --> G[Sepeti Aile Üyesiyle Paylaş]
    G --> H[Diğer Üye Markete Gider]
    H --> I{Raftaki Barkodu Okut}
    I -->|Doğru Ürün| J[Sepette Alındı Olarak İşaretle]
    I -->|Yanlış Ürün| K[Hata/Uyarı Ver]
```

---

## 4. Veritabanı Tasarımı (PostgreSQL ERD)

Veritabanı ilişkileri ve tabloları, verilerin tutarlılığını sağlamak ve konum tabanlı sorguları (PostGIS yardımıyla) optimize etmek üzere kurgulanmıştır.

```mermaid
erDiagram
    USERS ||--o{ GROUP_MEMBERS : joined
    GROUPS ||--o{ GROUP_MEMBERS : contains
    GROUPS ||--o{ BASKETS : owns
    BASKETS ||--o{ BASKET_ITEMS : contains
    PRODUCTS ||--o{ BASKET_ITEMS : selected_as
    MARKETS ||--o{ PRODUCT_PRICES : offers
    PRODUCTS ||--o{ PRODUCT_PRICES : priced_at
    USERS ||--o{ PRODUCTS : added_by
    USERS ||--o{ MARKETS : added_by

    USERS {
        integer id PK
        string name
        string email
        string phone
        string password
        datetime created_at
    }
    GROUPS {
        integer id PK
        string name
        integer creator_id FK
    }
    MARKETS {
        integer id PK
        string name
        string branch_name
        string address
        double latitude
        double longitude
        integer added_by_user_id FK
    }
    PRODUCTS {
        integer id PK
        string barcode UK
        string name
        string brand
        string category
        integer added_by_user_id FK
    }
    PRODUCT_PRICES {
        integer id PK
        integer product_id FK
        integer market_id FK
        decimal price
        boolean is_campaign
        datetime updated_at
    }
    BASKETS {
        integer id PK
        integer group_id FK
        string status "active/completed"
        datetime created_at
    }
    BASKET_ITEMS {
        integer id PK
        integer basket_id FK
        integer product_id FK
        integer quantity
        boolean is_purchased
    }
```

---

## 5. Teknik Altyapı ve Teknoloji Yığını (Tech Stack)

### Backend API (Laravel + PostgreSQL)
- **Framework**: Laravel 11/12.
- **Database**: PostgreSQL 18. Konum tabanlı "En yakın market" sorguları için **PostGIS** eklentisi kullanılacaktır.
- **API Standardı**: Mobil uygulamanın hızlı çalışması için JSON tabanlı RESTful API.
- **Caching**: Sık aranan ürünler ve fiyat listeleri için Redis önbellekleme sistemi.

### Mobil Uygulama (Cross-Platform)
- **Teknoloji**: Flutter (Dart) veya React Native. Kamera entegrasyonu ve barkod okuma kütüphaneleri (örn: `mobile_scanner` / `zxing`) ile hızlı tarama sağlanacaktır.
- **Yerel Depolama (Local DB)**: Markette internet çekmeme ihtimaline karşı sepet verileri mobil cihazda SQLite veya Hive ile çevrimdışı (offline) olarak da saklanabilecektir.

---

## 6. İş Modeli ve Gelir Kanalları (Monetization)

Uygulamanın büyüme aşamasında son kullanıcılar için tamamen ücretsiz kalması, kitleye hızlı ulaşmasını sağlayacaktır. Gelir modelleri şu şekildedir:

1. **Market Doping/Öne Çıkarma**: Marketler, kullanıcıların evde yaptıkları ürün aramalarında veya fiyat karşılaştırmalarında kendi şubelerini en üstte göstermek için reklam/doping bedeli öderler.
2. **Kampanya Duyuruları ve Push Bildirimleri**: Marketlerin haftalık aktüel/indirim kataloglarını kullanıcılara hedefli bildirim (Push Notification) olarak göndermesi.
3. **Anonim Tüketici Analitiği (Data Analytics)**: Hangi bölgelerde hangi ürünlerin daha çok arandığı, sepetlere eklendiği ve fiyat hassasiyetleri gibi pazar verilerinin anonimleştirilerek zincir marketlere raporlanması.

---

## 7. Açık Sorular ve Risk Analizi

> [!WARNING]
> **Fiyat Güncelliği Riski**: Kullanıcıların girdiği fiyatların doğruluğu nasıl teyit edilecek? 
> *Çözüm Önerisi*: Fiyat giren kullanıcılara puan/rozet sistemi verilmesi ve şüpheli fiyatların diğer kullanıcılar tarafından "Fiyat Doğru/Yanlış" şeklinde oylanabilmesi.

> [!IMPORTANT]
> **İnternet Çekim Gücü**: Büyük marketlerin bodrum katlarında veya bazı bölgelerinde mobil internet çekmeyebilir.
> *Çözüm Önerisi*: Mobil uygulamanın barkod okuma ve sepet işaretleme işlevlerini internet olmadan (Offline-First) yapabilmesi, internet geri geldiğinde arka planda API ile senkronize olması kritik önem taşımaktadır.
