# Cihaz Takip

Cep telefonu alım, stok, satış ve tamir operasyonları için responsive PHP uygulaması.

## Özellikler

- Sıfır, yenilenmiş ve ikinci el cihaz alım kaydı
- Cihazın alındığı kişi veya kurumun iletişim bilgileri
- Kişiden alımda kimlik ön/arka fotoğrafı
- Marka, model, hafıza, renk, IMEI, seri numarası, alış tarihi ve alış fiyatı
- Batarya yüzdesi ile 12 maddelik cihaz kontrol listesi
- Kasa, ekran, kutu, fatura ve ek görseller
- Stokta / satıldı / iade filtreleri ve hızlı arama
- Alıcı ve satış fiyatı dahil satış kaydı
- Müşteri, arıza, yapılan işlem, ücret ve teslim tarihli tamir modülü
- Telefon ve masaüstüne uyumlu arayüz
- Oturum, parola özeti, CSRF koruması ve oturum açmadan erişilemeyen özel görseller
- Tarayıcıda ve sunucuda otomatik görsel küçültme; EXIF bilgisini temizleyerek JPEG’e dönüştürme
- Varsayılan SQLite, isteğe bağlı MySQL desteği

## Gereksinimler

- PHP 8.2 veya üzeri
- PDO SQLite (veya PDO MySQL)
- GD, Fileinfo ve Mbstring PHP eklentileri
- Apache 2.4 ya da Nginx
- HTTPS sertifikası (canlı kullanım için zorunlu tutulması önerilir)

## Hızlı kurulum — SQLite

1. Klasörü sunucunuza yükleyin.
2. `.env.example` dosyasını `.env` adıyla kopyalayın.
3. Web sunucusunun belge kökünü `public` klasörüne yönlendirin.
4. `storage` ve `storage/uploads` klasörlerini PHP kullanıcısının yazabileceği şekilde yetkilendirin.
5. Uygulamayı tarayıcıda açın ve ilk yönetici hesabını oluşturun.

Yerel geliştirme için proje klasöründe:

```bash
cp .env.example .env
php -S 127.0.0.1:8080 -t public
```

Ardından `http://127.0.0.1:8080` adresini açın.

## MySQL kurulumu

1. Boş bir MySQL veritabanı ve yalnızca bu veritabanına erişen bir kullanıcı oluşturun.
2. `.env` dosyasındaki SQLite satırlarını kapatıp MySQL ayarlarını etkinleştirin.
3. İlk istekte tablolar otomatik oluşturulur.

Örnek:

```dotenv
DB_DRIVER=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cihaz_takip
DB_USERNAME=cihaz_takip
DB_PASSWORD=uzun_ve_benzersiz_bir_parola
```

## Apache örneği

```apache
<VirtualHost *:443>
    ServerName cihaz.example.com
    DocumentRoot /var/www/cihaz-takip/public

    <Directory /var/www/cihaz-takip/public>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
```

## Nginx örneği

```nginx
server {
    listen 443 ssl http2;
    server_name cihaz.example.com;
    root /var/www/cihaz-takip/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~ /\. {
        deny all;
    }
}
```

## Güvenlik ve KVKK notları

Kimlik görüntüleri özel nitelikte kişisel veri sayılabilecek kadar hassastır. Canlı kullanımda:

- Uygulamayı yalnızca HTTPS üzerinden yayınlayın.
- Sunucunun ve veritabanının düzenli, şifreli yedeğini alın.
- Personel hesaplarını kişi bazında açın; ortak parola kullanmayın.
- Verilere erişim ve saklama sürenizi işletmenizin KVKK politikasına göre belirleyin.
- Hosting hesabında iki aşamalı doğrulamayı etkinleştirin.
- `storage` klasörünü kesinlikle web belge kökü yapmayın.

## Yedekleme

SQLite kurulumunda uygulamayı kısa süreli bakım moduna aldıktan sonra `storage/database.sqlite` dosyasıyla `storage/uploads` klasörünü birlikte yedekleyin. MySQL kurulumunda veritabanı dökümünü ve aynı görsel klasörünü eş zamanlı saklayın.
