66 lines
3.1 KiB
Markdown
66 lines
3.1 KiB
Markdown
# 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 : 0–550px
|
||
- Tablet : 550–800px
|
||
- Desktop : 801–1920px
|
||
- 4K : 1921px+
|
||
|
||
## Commandes utiles
|
||
```bash
|
||
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é
|
||
```
|