# Onoxsoft Mobile App (Capacitor)

iOS + Android native wrapper for the Onoxsoft Panel web app.

## Kurulum Adımları

```bash
# 1. Bağımlılıkları yükle
cd mobile/
npm install

# 2. Web varlıklarını derle (ana proje kökünden)
cd .. && npm run build && cd mobile

# 3. Native platformları ekle
npx cap add ios
npx cap add android

# 4. Web → Native senkronizasyonu
npx cap sync

# 5. Icon + splash görsellerini oluştur (resources/ klasöründen)
npx capacitor-assets generate

# 6. IDE'de aç
npx cap open ios      # Xcode (yalnızca macOS)
npx cap open android  # Android Studio
```

## Mimari

Mobil uygulama, Onoxsoft Panel web uygulamasını yükleyen ince bir native kabuktur:

- **iOS:** WKWebView — native push, biyometri, durum çubuğu
- **Android:** Android WebView — aynı eklentiler
- **Sunucu URL'i:** `capacitor.config.ts` içindeki `server.url` ile yapılandırılabilir

Geliştirme modunda yerel Laravel sunucusuna bağlanır (`http://10.0.2.2:8000` — Android emülatörü için).

Production'da `server.url` tanımsız bırakılır ve web varlıkları `webDir` üzerinden paketlenir.

## Kaynak Dosyalar

`resources/` klasörüne uygun boyutta görseller eklenmelidir:

| Dosya | Boyut | Açıklama |
|-------|-------|----------|
| `resources/icon.png` | 1024×1024 | Uygulama simgesi |
| `resources/splash.png` | 2732×2732 | Başlatma ekranı |

`onox-mark.svg` dosyasını PNG'ye dönüştürmek için:

```bash
# Inkscape
inkscape public/images/onox-mark.svg --export-png=mobile/resources/icon.png -w 1024 -h 1024

# ImageMagick
convert -background '#0D0E12' -resize 1024x1024 public/images/onox-mark.svg mobile/resources/icon.png
```

## Derin Bağlantı (Deep Linking)

Uygulama `onoxpanel://` URL'lerini açar:

| URL | Hedef |
|-----|-------|
| `onoxpanel://accounts/123` | `/admin/accounts/123` |
| `onoxpanel://login` | `/login` |
| `onoxpanel://dashboard` | `/admin/dashboard` |

iOS Info.plist ve Android AndroidManifest.xml yapılandırması Capacitor tarafından otomatik oluşturulur.

## Push Bildirimleri

Native push, FCM (Android) ve APNs (iOS) kullanır.

**Sunucu endpoint'leri:**

| Yöntem | URL | Açıklama |
|--------|-----|----------|
| `POST` | `/api/mobile/register-push-token` | Cihaz token'ını kaydet |
| `DELETE` | `/api/mobile/unregister-push-token` | Token'ı sil |

**Bildirim payload'u:**

```json
{
    "title": "Hesap Askıya Alındı",
    "body": "example.com hesabınız askıya alındı.",
    "data": {
        "path": "/admin/accounts/123"
    }
}
```

`data.path` değeri, kullanıcı bildirime dokunduğunda otomatik olarak ilgili sayfaya yönlendirir.

## Biyometrik Giriş

Kimlik bilgileri iOS Keychain / Android Keystore'da şifreli olarak saklanır.
iOS'ta Face ID/Touch ID, Android'de parmak izi/yüz tanıma tetiklenir.

**Akış:**
1. Kullanıcı ilk oturum açmada şifresini girer
2. Biyometrik girişi etkinleştirir (Ayarlar > Güvenlik)
3. Sonraki açılışlarda biyometrik ile otomatik giriş yapılır

## Dağıtım

**iOS App Store:**
1. Xcode → Product → Archive
2. Distribute App → App Store Connect
3. TestFlight üzerinden test et, ardından yayınla

**Android Play Store:**
1. Android Studio → Build → Generate Signed Bundle / APK
2. Play Console'a yükle → Internal test → Production

## TS Bridge Modülleri

| Dosya | Açıklama |
|-------|----------|
| `src/bridge.ts` | Temel Capacitor başlatma, auth persistence |
| `src/push.ts` | Push bildirim kayıt ve dinleme |
| `src/biometric.ts` | Face ID / Touch ID / parmak izi |
| `src/deeplink.ts` | `onoxpanel://` URL yönlendirme |
| `src/ui-customization.ts` | Durum çubuğu, splash, klavye olayları |
