Navigation
Version : 1.0
Statut : Architecture cible
1. Objectif
Ce document définit les principes de navigation de DMV Mobile.
La navigation ne consiste pas uniquement à passer d'un écran à un autre.
Elle constitue l'un des éléments centraux de l'expérience utilisateur.
Chaque utilisateur doit toujours savoir :
- où il se trouve ;
- où il peut aller ;
- comment revenir.
La navigation doit rester simple, prévisible et cohérente sur Android comme sur iOS.
2. Principes fondamentaux
Les principes suivants sont considérés comme figés.
Une seule application
L'utilisateur n'utilise jamais plusieurs applications.
Même lorsqu'il passe du Public au Workspace, il reste dans DMV.
Aucune rupture visuelle ne doit donner l'impression de changer d'application.
Une seule navigation
Il n'existe qu'un seul système de navigation.
Les deux applications embarquées utilisent les mêmes principes.
Navigation orientée utilisateur
La navigation doit suivre les besoins de l'utilisateur.
Jamais l'organisation technique.
Exemple :
L'utilisateur ouvre une commune.
Il ne doit pas savoir :
- quel service répond ;
- quelle API est utilisée ;
- quelle application React est chargée.
3. Les espaces
DMV Mobile est constitué de deux espaces.
Public
Accessible :
- visiteurs
- utilisateurs
Il contient :
- Mur
- Recherche
- Commune
- Agenda
- Acteurs
- Publications
- Mon Espace
Workspace
Accessible uniquement aux utilisateurs autorisés.
Il permet :
- gérer un acteur
- gérer une mairie
- publier
- consulter les statistiques
- modifier les paramètres
Le passage du Public au Workspace doit être transparent.
4. Navigation principale
La navigation principale est assurée par une barre inférieure.
Cette barre constitue le point d'entrée principal de l'application.
Exemple de structure cible :
Accueil
Recherche
Agenda
Mon Espace
Menu
Cette structure pourra évoluer sans remettre en cause les principes de navigation.
5. Navigation contextuelle
Chaque écran peut proposer une navigation secondaire.
Exemples :
Commune
↓
Services
↓
Collectes
↓
Élus
↓
Actualités
Acteur
↓
Présentation
↓
Publications
↓
Agenda
↓
Informations
Cette navigation reste propre au contexte courant.
6. Navigation hiérarchique
Chaque écran possède un parent logique.
Exemple :
Accueil
↓
Commune
↓
Publication
↓
Auteur
Le bouton Retour doit toujours remonter cette hiérarchie.
7. Navigation transversale
Certains contenus peuvent être atteints depuis plusieurs endroits.
Exemple :
Une publication peut être ouverte :
- depuis le Mur
- depuis un acteur
- depuis une commune
- depuis une notification
- depuis une recherche
Une fois ouverte, l'expérience doit être identique.
8. Deep Links
Chaque ressource importante possède une adresse canonique et, lorsque nécessaire, une route interne mobile.
Rôles respectifs :
- URL HTTPS : lien public, partageable et indexable, par exemple
https://www.dansmonvillage.fr/bessan. - Universal Link iOS : association d'une URL HTTPS au lancement de l'app installée sur iPhone.
- Android App Link : association équivalente côté Android.
- Schéma
dmv://: route interne contrôlée par l'application, utile pour notifications, widgets ou intégrations natives.
Exemples de routes internes :
dmv://commune/bessan
dmv://acteur/club-foot
dmv://publication/123
dmv://agenda
dmv://workspace/acteur/club-foot
Cette architecture permet :
- les notifications ;
- les widgets ;
- les QR Codes ;
- les liens externes ;
- la compatibilité web lorsque l'application n'est pas installée.
9. Notifications
Une notification ne doit jamais ouvrir l'accueil.
Elle ouvre directement la ressource concernée.
Exemple :
Nouvelle publication
↓
Ouverture directe de la publication
Nouvel événement
↓
Ouverture de l'événement
Nouvelle alerte mairie
↓
Ouverture de l'alerte
10. Retour Android
Le bouton Retour Android suit les règles suivantes.
Cas normal
Retour à l'écran précédent.
Racine
Lorsque l'utilisateur est déjà sur l'écran principal :
Retour
↓
Réduction de l'application
Pas fermeture brutale.
Workspace
Si l'utilisateur quitte un écran Workspace :
Retour
↓
Workspace précédent
Jamais retour automatique dans le Public.
11. Navigation iOS
Sous iOS :
Le swipe retour doit fonctionner partout où cela est cohérent.
Les animations doivent respecter les conventions Apple.
12. Changement Public ↔ Workspace
Le passage entre les deux espaces doit être fluide.
Exemple :
Profil Acteur
↓
Modifier
↓
Workspace
↓
Enregistrer
↓
Retour Profil Acteur
L'utilisateur ne doit jamais avoir l'impression d'avoir quitté l'application.
13. Gestion de la connexion
Si une action nécessite une authentification :
Utilisateur
↓
Action protégée
↓
Connexion
↓
Retour automatique
↓
Action initiale
L'utilisateur reprend exactement là où il s'était arrêté.
14. Changement de rôle
Un utilisateur peut gérer plusieurs espaces.
Exemple :
- Association A
- Association B
- Commune
- Entreprise
Le changement d'espace ne change jamais d'application.
Seul le contexte change.
15. Navigation Offline
Si le réseau disparaît :
Les écrans déjà disponibles restent consultables.
Les éléments indisponibles affichent un état explicite.
Jamais une erreur technique.
Exemple :
Connexion perdue
↓
Les dernières données disponibles sont affichées.
↓
Synchronisation dès le retour du réseau.
16. Ouverture externe
Les liens externes utilisent le navigateur système.
Exemples :
- Site web
- Billetterie
- Service externe
DMV reste ouvert en arrière-plan.
17. Multi-fenêtres
L'application doit supporter :
Android :
- écran partagé
iPad :
- Split View
- Stage Manager
La navigation ne doit jamais dépendre d'une taille d'écran fixe.
18. Accessibilité
La navigation doit rester utilisable :
- au clavier
- avec VoiceOver
- avec TalkBack
- avec une grande taille de texte
Toutes les actions importantes doivent rester accessibles.
19. Erreurs
Une erreur de navigation ne doit jamais bloquer l'utilisateur.
Exemple :
Publication supprimée.
↓
Message explicite.
↓
Retour automatique à l'écran précédent.
Jamais une page blanche.
20. Décisions d'architecture
Les décisions suivantes sont considérées comme figées.
✅ Une seule navigation.
✅ Une seule application.
✅ Public et Workspace cohabitent.
✅ Navigation basée sur le contexte utilisateur.
✅ Toutes les ressources possèdent un Deep Link.
✅ Les notifications ouvrent directement la ressource.
✅ Le bouton Retour respecte les conventions Android et iOS.
✅ Le contexte utilisateur est toujours conservé.
Conclusion
La navigation constitue l'un des piliers de DMV Mobile.
Elle ne doit jamais refléter l'organisation technique de la plateforme.
L'utilisateur ne navigue pas entre des applications.
Il navigue simplement dans son expérience DMV.
Les composants techniques (Capacitor, dmv-public, dmv-workspace, API...) restent invisibles et transparents.