manager-app/CLAUDE.md

3.1 KiB
Raw Permalink Blame History

manager-app

Interface de gestion de contenu Flutter (web/desktop) pour configurer tablet-app et mymuseum-visitapp.

Stack

  • Flutter web (cible principale), support desktop partiel
  • State management : Provider + ChangeNotifier
  • Navigation : GoRouter
  • Firebase Storage (upload de ressources)

Structure

lib/
├── main.dart              # Entry point, init Firebase, GoRouter, breakpoints responsive
├── app_context.dart       # Provider root wrapping ManagerAppContext
├── client.dart            # Wrapper exposant les 12+ facades API générées
├── constants.dart         # Couleurs, types de sections, langues, types de ressources
├── Models/                # ManagerAppContext (état central), Session, Menu...
├── Helpers/               # FileHelper (localStorage session), PDFHelper
├── Components/            # 48+ widgets réutilisables (inputs, pickers, players...)
└── Screens/               # Écrans par domaine
    ├── Main/              # Dashboard principal avec menu latéral
    ├── Configurations/    # Builder de configuration par type de section
    │   └── SubSection/    # Map, Menu, Slider, Quiz, Article, PDF, Video, Weather, Event, Parcours, Game, Agenda
    ├── Resources/         # CRUD ressources (Image, Video, Audio, PDF, JSON...)
    ├── Applications/      # Liaison config ↔ app device
    ├── Kiosk_devices/     # Gestion des devices
    ├── Users/             # Gestion des utilisateurs
    ├── ApiKeys/           # Gestion des clés API
    ├── Notifications/     # Push notifications
    └── Statistics/        # Analytics visiteurs

Client API généré (manager_api_new/)

C'est ici que le client est généré. Il est consommé via dépendance locale par tablet-app et mymuseum-visitapp.

  • Ne pas modifier manuellement les fichiers dans manager_api_new/
  • Régénérer via OpenAPI generator quand le backend change : openapi_generator_config.json à la racine
  • 16 classes API : AuthenticationApi, ConfigurationApi, SectionApi, SectionMapApi, SectionEventApi, ResourceApi, DeviceApi, UserApi, StatsApi, AIApi, etc.
  • 130+ DTOs générés dans manager_api_new/lib/model/

État central (ManagerAppContext)

Contient : credentials, accessToken, instanceId, instanceDTO, référence au client API, configuration/section sélectionnée. Accès via context.read<AppContext>() ou context.watch<AppContext>().

Flow d'authentification

  1. FileHelper().readSessionWeb() → localStorage
  2. Si pas de session → /login
  3. POST /api/Authentication/AuthenticateWithJson → TokenDTO
  4. Init Client avec le host backend
  5. Fetch InstanceDTO → détermine les features (isMobile, isTablet, isWeb, isVR, isStatistic)
  6. Redirect vers /main/:view

Breakpoints responsive

  • Mobile : 0550px
  • Tablet : 550800px
  • Desktop : 8011920px
  • 4K : 1921px+

Commandes utiles

flutter run -d chrome              # Lancer en web
flutter build web                  # Build web
flutter pub run build_runner build # Regénérer code généré