Files
mobile/README.md
T
2026-06-28 12:29:06 +02:00

118 lines
3.2 KiB
Markdown

# Laverie Mobile
Application **native** Android et iOS pour Laverie Connectée — consultation des laveries, portefeuille, réservations et lavages.
> **Pas de cible web Flutter.** Le back-office web est géré séparément (Laravel + Inertia). Cette app est mobile-first : **Android en priorité**, **iOS prévu** dès le départ (même codebase).
## Prérequis
| Outil | Android | iOS (plus tard) |
|-------|---------|-----------------|
| Flutter SDK 3.2+ | Oui | Oui (sur macOS) |
| Android Studio + SDK | Oui | — |
| Xcode | — | Oui (macOS uniquement) |
| Backend API | [../README.md](../README.md) | idem |
## Installation (première fois)
Le dépôt contient le code Dart (`lib/`) mais pas les dossiers natifs. Générez **Android + iOS uniquement** :
### Windows (PowerShell)
```powershell
cd mobile
.\scripts\bootstrap_platforms.ps1
```
### macOS / Linux
```bash
cd mobile
chmod +x scripts/bootstrap_platforms.sh
./scripts/bootstrap_platforms.sh
```
Équivalent manuel :
```bash
flutter create . --org fr.laverie --project-name laverie_mobile --platforms=android,ios
flutter pub get
```
Ne pas ajouter `--platforms web` : le web Flutter est hors périmètre.
## Lancement Android (priorité)
```bash
# Émulateur Android (API par défaut : 10.0.2.2 = localhost hôte)
flutter run -d android
# Appareil physique — remplacer par l'IP de votre PC
flutter run -d android --dart-define=API_BASE_URL=http://192.168.1.10:8000/api/v1
```
### HTTP en développement
L'émulateur Android autorise le trafic HTTP clair vers `10.0.2.2` via la config réseau de debug. En production, l'API doit être en **HTTPS**.
## iOS (préparation)
Le même projet inclut le dossier `ios/` pour une future build App Store. Nécessite **macOS + Xcode**.
```bash
# Simulateur iOS (localhost)
flutter run -d ios
# Appareil physique
flutter run -d ios --dart-define=API_BASE_URL=http://192.168.1.10:8000/api/v1
```
Points déjà prévus côté Dart :
- `flutter_secure_storage` avec options Keychain iOS
- URL API par défaut `127.0.0.1` sur iOS simulateur
- Détection plateforme dans `lib/core/platform/app_platform.dart`
## Configuration API
| Contexte | URL API |
|----------|---------|
| Android émulateur | `http://10.0.2.2:8000/api/v1` (défaut) |
| iOS simulateur | `http://127.0.0.1:8000/api/v1` (défaut) |
| Appareil physique | `--dart-define=API_BASE_URL=http://IP:8000/api/v1` |
## Compte de démonstration
| Email | Mot de passe |
|-------|--------------|
| marie.dupont@demo.local | password |
## Architecture
```
lib/
├── main.dart # Garde anti-web / anti-desktop
├── core/
│ ├── platform/ # Android / iOS uniquement
│ ├── config/ # API URL, secure storage
│ ├── api/
│ ├── auth/
│ ├── router/
│ └── theme/
└── features/
├── auth/
├── home/
├── establishments/
├── wallet/
├── booking/
├── wash/
└── profile/
```
## Prochaines étapes (Android)
1. Scan QR machine (`mobile_scanner`) → `POST /washes/start`
2. Rechargement wallet simulé
3. Notifications push (FCM Android, APNs iOS plus tard)
4. Tests `integration_test` sur émulateur Android