mymuseum-visitapp/CLAUDE.md

2.6 KiB

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 :

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

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)