Architecture Decisions
Version : 1.0
Statut : Référence architecturale
ADR : MOBILE-014
1. Objectif
Ce document rassemble les décisions d'architecture considérées comme fondatrices de DMV Mobile.
Contrairement aux autres documents qui décrivent un composant ou un domaine particulier, celui-ci explique pourquoi certaines décisions ont été prises.
Ces décisions servent de référence pour tous les développements futurs.
Elles ne doivent être remises en cause qu'à l'occasion d'une évolution majeure de l'architecture.
2. Philosophie
Une architecture durable ne repose pas uniquement sur des choix techniques.
Elle repose sur des principes.
Les technologies évolueront.
Les principes doivent rester stables.
Les décisions suivantes sont donc considérées comme faisant partie de l'ADN de DMV Mobile.
ADR-001 — Une seule plateforme
Décision
DMV reste une plateforme unique.
Le Web et le Mobile ne constituent pas deux produits différents.
Ils représentent deux interfaces d'une même plateforme.
Motivation
Éviter :
- les divergences fonctionnelles ;
- les doubles développements ;
- les comportements incohérents.
Conséquences
Toutes les évolutions fonctionnelles sont partagées.
Une fonctionnalité développée pour le Web doit pouvoir bénéficier au Mobile, et inversement.
ADR-002 — Une seule application mobile
Décision
DMV Mobile est une application unique.
Elle embarque :
- dmv-public
- dmv-workspace
Le Backoffice reste indépendant.
Alternatives étudiées
Deux applications séparées :
Rejeté.
Complexité :
- double maintenance ;
- double publication ;
- double authentification ;
- UX dégradée.
Conséquences
L'utilisateur navigue naturellement entre les espaces sans changer d'application.
ADR-003 — Capacitor comme socle
Décision
Capacitor constitue le shell officiel de DMV Mobile.
Alternatives étudiées
Flutter
React Native
Développement natif
Motivation
Réutilisation maximale des applications React existantes.
Maintenance réduite.
Architecture unique.
ADR-004 — Le serveur est la source de vérité
Décision
Aucune donnée locale n'est considérée comme officielle.
Le serveur reste l'unique référence.
Motivation
Les données DMV évoluent en permanence.
Le téléphone ne peut garantir leur exactitude.
Conséquences
Le cache améliore l'expérience.
Il ne remplace jamais le serveur.
ADR-005 — Online First with Offline Continuity
Décision
DMV n'est pas une plateforme Offline First.
Motivation
Le mode hors connexion doit améliorer le confort.
Pas remplacer la plateforme.
Conséquences
Les données déjà consultées restent disponibles.
Les actions critiques nécessitent une connexion.
ADR-006 — Cache hiérarchisé
Décision
Le cache est organisé par niveaux.
Il ne s'agit pas d'un simple cache HTTP.
Motivation
Toutes les données n'ont pas la même importance.
Le cache doit refléter cette hiérarchie.
ADR-007 — Synchronisation automatique
Décision
Toutes les synchronisations sont automatiques.
Motivation
Éviter les erreurs utilisateur.
Garantir une plateforme cohérente.
ADR-008 — Les brouillons avant la publication
Décision
Une publication ne peut jamais être créée directement hors connexion.
Le téléphone crée uniquement un brouillon.
Motivation
Éviter les conflits.
Garantir la validation serveur.
ADR-009 — Aucun métier dans le mobile
Décision
La logique métier reste entièrement côté serveur.
Le téléphone fournit uniquement :
- une interface ;
- un cache ;
- des services natifs.
Motivation
Une seule logique métier.
Une seule maintenance.
ADR-010 — Native Platform
Décision
Toutes les fonctionnalités natives passent par une couche d'abstraction.
Jamais directement par Capacitor.
Motivation
Découpler les applications React du runtime mobile.
Préparer les évolutions futures.
ADR-011 — Security by Design
Décision
La sécurité est intégrée dès l'architecture.
Elle ne constitue pas un ajout ultérieur.
Principes
- Zero Trust
- Least Privilege
- Privacy by Design
ADR-012 — Performance by Design
Décision
Les performances constituent une responsabilité d'architecture.
Elles ne sont pas uniquement optimisées en fin de développement.
ADR-013 — Une plateforme évolutive
Décision
L'architecture actuelle doit permettre d'intégrer sans refonte :
- Widgets
- Wallet
- NFC
- Apple Watch
- Wear OS
- Android Auto
- CarPlay
- futurs services DMV
ADR-014 — Le Backoffice reste indépendant
Décision
Le Backoffice n'est pas intégré à DMV Mobile.
Motivation
Les usages sont différents.
Les contraintes de sécurité sont différentes.
Les utilisateurs sont différents.
ADR-015 — Navigation Engine
Décision
La navigation devient un composant d'architecture à part entière (Navigation Engine), indépendant de toute plateforme d'exécution (Cloudflare, Next.js, Capacitor, hébergeur).
Alternatives étudiées
Coupler directement chaque application à sa plateforme d'hébergement :
Rejeté.
Chaque nouvelle plateforme oblige alors à revalider ou réécrire la navigation de chaque application indépendamment.
Réécrire immédiatement toute la navigation existante :
Rejeté.
Contredit le principe de migration progressive ; risque de régression disproportionné.
Conséquences
Toute plateforme d'exécution est intégrée via un Platform Adapter, jamais directement.
La V0.9 Beta n'est pas impactée : le mécanisme de routing actuel du Workspace est conservé tel quel.
Détail complet : 16-navigation-engine.md.
3. Décisions considérées comme figées
Les décisions suivantes sont considérées comme fondatrices de DMV Mobile.
Elles ne doivent être remises en cause qu'en cas de changement majeur de la plateforme.
✅ Une seule plateforme DMV
✅ Une seule application mobile
✅ Deux applications embarquées :
- dmv-public
- dmv-workspace
✅ Backoffice indépendant
✅ Capacitor comme shell officiel
✅ Une seule API Laravel
✅ Une seule base PostgreSQL
✅ Le serveur reste la source de vérité
✅ Online First with Offline Continuity
✅ Cache Engine hiérarchisé
✅ Synchronization Engine centralisé
✅ Native Platform
✅ Navigation Engine
✅ Security by Design
✅ Quality by Design
4. Évolutions futures
Les technologies pourront évoluer.
Par exemple :
- Capacitor pourra être remplacé ;
- Android évoluera ;
- iOS évoluera ;
- React évoluera.
Ces changements ne devront jamais remettre en cause les principes définis dans ce document.
Les décisions d'architecture doivent survivre aux technologies.
Conclusion
Ce document constitue la référence architecturale de DMV Mobile.
Les documents précédents décrivent comment fonctionne la plateforme.
Celui-ci explique pourquoi elle a été conçue ainsi.
Toute évolution future devra être évaluée à la lumière de ces décisions afin de préserver la cohérence de l'architecture dans le temps.