bf191d6396ba3c99cdc34480b5a9afbf617a8ac9
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 | 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)
cd mobile
.\scripts\bootstrap_platforms.ps1
macOS / Linux
cd mobile
chmod +x scripts/bootstrap_platforms.sh
./scripts/bootstrap_platforms.sh
Équivalent manuel :
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é)
# É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.
# 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_storageavec options Keychain iOS- URL API par défaut
127.0.0.1sur 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
| 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)
- Scan QR machine (
mobile_scanner) →POST /washes/start - Rechargement wallet simulé
- Notifications push (FCM Android, APNs iOS plus tard)
- Tests
integration_testsur émulateur Android
Languages
Dart
59.7%
HTML
39.2%
PowerShell
0.4%
Shell
0.3%
Swift
0.3%