initial commit
This commit is contained in:
@@ -1,2 +1,117 @@
|
||||
# mobile
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user