mymuseum-visitapp/CLAUDE.md

59 lines
2.6 KiB
Markdown

# mymuseum-visitapp
App Flutter pour les visiteurs finaux, installée sur leurs propres devices (smartphone/tablette).
## Fonctionnement
- Le visiteur peut scanner un **QR code** pour afficher le détail d'un contenu
- Les **beacons** servent à suggérer l'affichage de contenu selon la position du visiteur
- Accès au contenu configuré dans `manager-app` pour son instance
## Stack
- Flutter mobile (Android + iOS)
- State management : **Provider** + **GetX** (hybride)
- `ChangeNotifier` pour le contexte global (VisitContext)
- `Get.put()` pour les contrôleurs GetX (ex: `RequirementStateController`)
- Gestion des langues via `translations.dart` (Helpers) : les langues sont récupérées depuis le backend, pas depuis la locale du device — c'est pourquoi on n'utilise pas `flutter_localizations` pour le contenu
- SQLite (`sqflite`) pour le cache local
- Firebase Messaging + Local Notifications (push notifications)
## Client API
Dépendance locale sur le client généré dans `manager-app` :
```yaml
manager_api_new:
path: ../manager-app/manager_api_new
```
**Ne pas copier/dupliquer le client** — toujours pointer vers `manager-app/manager_api_new`.
## Structure
```
lib/
├── api/ # Intégration OpenAPI
├── Components/ # AppBar, language selector, scanner, image/video viewers
├── Helpers/ # DatabaseHelper, networkCheck, translationHelper, modelsHelper
├── l10n/ # ARB files présents mais non utilisés pour le contenu (voir translationHelper)
├── Models/ # VisitContext, beaconSection, articleRead, agenda, weatherData
├── Screens/
│ ├── Home/ # Liste des configurations, écran d'accueil
│ ├── ConfigurationPage/ # Setup avec détection beacon
│ └── Sections/ # Agenda, Article, Game, Map, Menu, PDF,
│ # Quiz, Slider, Video, Weather, Web
└── Services/ # apiService, assistantService, downloadConfiguration,
# pushNotificationService, statisticsService
```
## Particularités vs tablet-app
- Langues gérées via `translationHelper` + données backend (pas via ARB/flutter_localizations pour le contenu)
- Push notifications (Firebase Messaging)
- Scanner QR (`mobile_scanner`) + support beacons
- Speech-to-text (`speech_to_text`)
- Pas de MQTT
- GetX en plus de Provider pour certains contrôleurs
## Commandes utiles
```bash
flutter run # Lancer sur device/émulateur connecté
flutter build apk # Build Android
flutter build ios # Build iOS
flutter gen-l10n # (peu utile, langues gérées via backend)
```