# Satış Takip Sistemi

Küçük işletmeler için basit, hafif satış ve stok takip uygulaması.  
Python + Flask + SQLite ile çalışır. Kurulum gerektirmez, tek komutla başlar.

---

## Kurulum ve Çalıştırma

```bash
# 1. Bağımlılıkları yükle
pip install -r requirements.txt

# 2. Uygulamayı başlat
python app.py
```

Tarayıcıda `http://localhost:5000` adresini açın.  
İlk açılışta dükkan adı ve parola belirleme ekranı gelir.

---

## Klasör Yapısı

```
project/
│
├─ app.py                  # Giriş noktası; Flask uygulaması ve blueprint kayıtları
├─ requirements.txt        # Bağımlılıklar (sadece Flask)
├─ README.md
├─ veri.db                 # SQLite veritabanı (otomatik oluşur)
│
├─ templates/
│  ├─ base.html            # Ortak HTML iskeleti (CSS/JS linkleri burada)
│  └─ index.html           # Ana sayfa (base.html'yi extend eder)
│
├─ static/
│  ├─ css/
│  │  ├─ common/
│  │  │  ├─ reset.css      # Box-sizing, margin/padding sıfırlama
│  │  │  ├─ layout.css     # App shell, topbar, dashboard, actions, workspace
│  │  │  └─ components.css # Overlay, stat kartlar, formlar, toast, tablo vb.
│  │  └─ pages/
│  │     └─ index.css      # Sadece index sayfasına özel: hoş geldin & yakında panelleri
│  │
│  ├─ js/
│  │  ├─ common/
│  │  │  ├─ api.js         # Tüm fetch/API çağrıları
│  │  │  ├─ ui.js          # Toast, panel geçişi, overlay, saat
│  │  │  └─ utils.js       # esc(), animVal(), formatTL()
│  │  └─ pages/
│  │     └─index.js       # Giriş, kurulum, kilitleme, panel sw(), dashboard yükleme
│  │
│  └─ img/                 # Statik görseller (şimdilik boş)
│
├─ routes/
│  ├─ auth_routes.py       # /api/durum  /api/kurulum  /api/giris  /api/cikis  /api/dukkan
│  ├─ dashboard_routes.py  # /api/dashboard
│  ├─ customer_routes.py   # /api/musteriler/ara  /api/musteriler
│  ├─ product_routes.py    # /api/urunler/ara  /api/urunler
│  ├─ sales_routes.py      # /api/satislar
│  └─ stock_routes.py      # /api/stok/hareket
│
├─ services/
│  ├─ auth_service.py      # Kurulum kontrolü, şifre doğrulama, dükkan adı
│  ├─ dashboard_service.py # Dashboard istatistikleri
│  ├─ customer_service.py  # Müşteri arama ve ekleme
│  ├─ product_service.py   # Ürün listeleme ve arama
│  ├─ sales_service.py     # Satış ekleme ve listeleme
│  └─ stock_service.py     # Stok hareketi kaydetme
│
└─ core/
   ├─ db.py                # get_db(), close_db(), init_db()
   ├─ config.py            # DB_PATH, SECRET_KEY
   └─ security.py          # hash_pw()
```

---

## Veritabanı Tabloları

| Tablo              | Açıklama                            |
|--------------------|-------------------------------------|
| `ayarlar`          | Dükkan adı, parola hash, kurulum flag |
| `musteriler`       | Müşteri kayıtları                   |
| `urunler`          | Ürün kataloğu ve stok miktarları    |
| `satislar`         | Satış kayıtları                     |
| `stok_hareketleri` | Stok giriş/çıkış/düzeltme geçmişi  |

---

## API Endpointleri

| Method | Endpoint             | Açıklama                    |
|--------|----------------------|-----------------------------|
| GET    | `/api/durum`         | Kurulum tamamlandı mı?       |
| POST   | `/api/kurulum`       | İlk kurulum                 |
| POST   | `/api/giris`         | Giriş yap                   |
| POST   | `/api/cikis`         | Oturumu kapat (kilitle)      |
| GET    | `/api/dukkan`        | Dükkan adını getir           |
| GET    | `/api/dashboard`     | Dashboard istatistikleri     |
| GET    | `/api/musteriler/ara`| Müşteri ara                 |
| POST   | `/api/musteriler`    | Yeni müşteri ekle            |
| GET    | `/api/urunler/ara`   | Ürün ara                    |
| GET    | `/api/urunler`       | Tüm ürünleri listele         |
| POST   | `/api/satislar`      | Yeni satış ekle              |
| GET    | `/api/satislar`      | Satışları listele            |
| POST   | `/api/stok/hareket`  | Stok hareketi kaydet         |

---

## Notlar

- Veritabanı `veri.db` dosyasına yazılır; uygulama ilk açılışta otomatik oluşturur.
- `SECRET_KEY` ortam değişkeniyle geçersiz kılınabilir: `SECRET_KEY=... python app.py`
- Üretim ortamında `debug=False` olarak çalışır (varsayılan).
