# 📱 My Truck — Build Android / iOS

L'application My Truck est packagée avec **Capacitor** : le même code React qui tourne sur ton serveur NAS est embarqué dans une vraie app native Android (Play Store) et iOS (App Store).

---

## ⚙️ Pré-requis communs

1. Que ton backend soit accessible publiquement (via ton futur domaine, ex: `https://mytruck.exemple.com`)
2. Node.js 20+ et Yarn installés sur ta machine de dev
3. Le code source My Truck (dossier `frontend/`)

---

## 🟢 1. Configurer l'URL de ton backend

Avant de builder, édite `frontend/.env` :

```
REACT_APP_BACKEND_URL=https://mytruck.ton-domaine.com
```

⚠️ **Important** : pour les apps natives (Android/iOS), l'URL DOIT être HTTPS quand tu pars en prod. Sinon les apps natives bloqueront les requêtes (Mixed Content / ATS).

Puis builde le web :

```bash
cd frontend
yarn install
yarn build
npx cap sync          # copie le build dans android/ et ios/
```

---

## 🤖 2. Build Android (APK / AAB pour Play Store)

### Pré-requis Android
- [Android Studio](https://developer.android.com/studio) installé
- Java JDK 17

### Étapes

```bash
cd frontend
npx cap open android
```

Android Studio va s'ouvrir avec ton projet.

**Premier lancement** :
1. Laisse Gradle synchroniser (peut prendre 5-10 min la première fois)
2. Branche un téléphone Android (USB debugging activé) ou utilise un émulateur
3. Clique sur le bouton ▶️ Run en haut

**Pour générer un APK signé (Play Store)** :
1. Menu **Build** → **Generate Signed Bundle / APK**
2. Choisis **Android App Bundle** (recommandé par Play Store)
3. Crée un keystore (garde-le précieusement, c'est ta signature à vie !)
4. Choisis `release` build variant
5. Le `.aab` final se trouve dans `android/app/release/`

**Upload sur Play Store** :
1. Va sur [Google Play Console](https://play.google.com/console)
2. Crée une fiche app
3. Upload le `.aab`
4. Remplis les screenshots, description, classification, etc.

---

## 🍎 3. Build iOS (App Store)

⚠️ Tu as besoin d'un **Mac** avec Xcode pour ça (pas d'autre solution officielle Apple).

### Alternative sans Mac : Codemagic.io
Tu peux utiliser un service cloud comme [Codemagic](https://codemagic.io) ou [Bitrise](https://bitrise.io) qui te louent un Mac dans le cloud pour build l'app iOS depuis Git. C'est ~30€/mois.

### Étapes (sur un Mac)

```bash
cd frontend
npx cap open ios
```

Xcode va s'ouvrir.

1. Compte développeur Apple requis (99€/an) → [developer.apple.com](https://developer.apple.com)
2. Dans Xcode, sélectionne ton équipe (Team)
3. Bundle ID = `com.stef.mytruck` (ou ce que tu veux)
4. Branche un iPhone ou choisis un simulateur, clique ▶️
5. Pour soumettre : Menu **Product** → **Archive** → **Distribute App** → **App Store Connect**

---

## 🔄 Workflow standard (après une modif du code)

Quand tu modifies le code React :

```bash
cd frontend
yarn build              # rebuild web
npx cap sync            # propage vers android/ et ios/
npx cap open android    # ou : npx cap open ios
```

Puis re-build l'app dans Android Studio / Xcode.

---

## 🎨 Icône d'application

L'icône utilisée est ton logo STEF camion blanc/bleu. Pour la changer :

- **Android** : remplace les fichiers dans `android/app/src/main/res/mipmap-*/ic_launcher.png`
- **iOS** : remplace `ios/App/App/Assets.xcassets/AppIcon.appiconset/`

💡 **Astuce** : utilise [App Icon Generator](https://www.appicon.co/) pour générer toutes les tailles d'un coup à partir d'un PNG 1024×1024.

---

## 🔔 Notifications push (Firebase Cloud Messaging)

Le code mobile est déjà câblé avec `@capacitor/push-notifications`. Pour activer les push réels :

1. Crée un projet Firebase (gratuit) : [console.firebase.google.com](https://console.firebase.google.com)
2. Ajoute une app **Android** → bundle `com.stef.mytruck`
3. Télécharge `google-services.json` → place-le dans `android/app/`
4. Pour iOS, ajoute une app **iOS** → télécharge `GoogleService-Info.plist` → drag dans Xcode
5. Suis le guide Capacitor : https://capacitorjs.com/docs/apis/push-notifications

Côté backend, ajouter Firebase Admin SDK (à faire dans une prochaine itération de l'app — déjà préparé côté API avec `/api/devices/register`).

---

## 🆘 Problèmes fréquents

**"Cannot connect to backend"** sur l'app native :
- Vérifie que `REACT_APP_BACKEND_URL` est bien en HTTPS
- Vérifie le CORS du backend
- Reconstruis avec `yarn build && npx cap sync`

**Gradle sync infinie** :
- Supprime `android/.gradle/` et recommence
- Vérifie que tu as Java 17

**Notifications web ne marchent pas dans l'app mobile** :
- C'est normal : les Web Notifications API ne marchent pas dans Capacitor. Les notifs natives passeront par FCM (point ci-dessus).
