.PSMA. Maroc
📱

Application Mobile

Une application Flutter cross-platform pour Android et iOS, offrant un accès mobile sécurisé à .PSMA. Maroc — notes hors-ligne, notifications push et interface bilingue FR/AR.

Flutter Android & iOS Mode hors-ligne 7 rôles Notifications push

Vue d'ensemble

L'application mobile .PSMA. Maroc est une application Flutter 3.16+ cross-platform (Android 7+ / iOS 13+) construite en architecture propre (Clean Architecture) avec des modules organisés par rôle utilisateur. Elle constitue l'extension mobile native de la plateforme .PSMA., offrant un accès sécurisé aux données de l'établissement depuis n'importe quel appareil.

La gestion d'état est assurée par Flutter Riverpod 2.x, avec un cache local SQLite (Drift 2.18) permettant la saisie des notes sans connexion internet et une synchronisation automatique à la reconnexion.

  • Application native Flutter — un seul code pour Android et iOS
  • Architecture modulaire par rôle (Parent, Enseignant, Comptable, Directeur, Admin)
  • Saisie des notes hors-ligne avec synchronisation différée et résolution de conflits
  • Notifications push Firebase pour notes, absences et paiements
  • Interface bilingue Français / Arabe avec support RTL complet
  • Authentification sécurisée par token Sanctum avec épinglage de certificat
  • Gestion des sessions multi-appareils (max. 3 sessions simultanées)
  • Conformité Loi 09-08 Maroc pour la protection des données personnelles

Galerie de l'application

Découvrez l'interface intuitive du module en images.

7 espaces utilisateurs

Chaque rôle dispose d'un espace dédié avec ses propres écrans, données et permissions. L'accès est attribué lors de la connexion selon le profil du compte.

👨‍👩‍👧
Parent
  • Tableau de bord famille
  • Liste & profils des enfants
  • Relevé de notes par matière et période
  • Historique des absences
  • Historique des paiements
  • Emploi du temps hebdomadaire
  • Affectation transport
📚
Enseignant
  • Tableau de bord avec statistiques rapides
  • Emploi du temps personnel
  • Affectations matières / niveaux
  • Liste des élèves par classe
  • Saisie des notes hors-ligne
  • Enregistrement des absences
  • Cahier de texte numérique
💰
Comptable
  • Tableau de bord financier
  • Recherche élève par nom / ID
  • Historique paiements par élève
  • Saisie de nouveau paiement + bon de caisse
  • Rapports de paiement par date & niveau
🏫
Directeur
  • Tableau de bord inscriptions & tendances
  • Résumés d'absences par niveau avec graphiques
  • Annuaire des élèves
  • Annuaire des enseignants
  • Statistiques de capacité des classes
⚙️
Administrateur
  • Tableau de bord système (compteurs, activité)
  • Liste des utilisateurs avec activation / désactivation
  • Gestion des comptes & réinitialisation mot de passe
  • Journaux d'audit avec filtrage
📋
Registraire
  • Affectations d'inscription
  • Gestion des dossiers élèves
  • Validation administrative mobile
🔐
Super Admin
  • Tableau de bord multi-établissements
  • Statistiques globales toutes entités
  • Accès complet à tous les modules

Mode hors-ligne & synchronisation

Les enseignants peuvent saisir les notes sans connexion internet. Les données sont stockées localement (SQLite / Drift) et synchronisées automatiquement dès que la connectivité est rétablie.

1
Saisie hors-ligne

L'enseignant saisit les notes dans l'app sans réseau. Les données sont enregistrées dans la file d'attente locale SQLite (GradeSyncQueue).

2
Détection de connectivité

L'app surveille en permanence la connectivité réseau. Une bannière discrète signale le mode hors-ligne à l'utilisateur.

3
Synchronisation automatique

À la reconnexion, l'app synchronise automatiquement les données en attente — moins de 30 secondes avec détection et résolution de conflits.

4
Rétention 30 jours

Les données hors-ligne sont conservées 30 jours avant expiration automatique. Nettoyage du cache à chaque déconnexion pour la confidentialité.

Technologies utilisées

L'application s'appuie sur des packages Flutter matures et éprouvés pour garantir performances, sécurité et maintenabilité à long terme.

Framework
Flutter 3.16+
Dart 3.2+ — Android API 24+ / iOS 13+, optimisé tablette
État & Réactivité
Riverpod 2.x
40+ providers, AsyncValue, cache et invalidation automatiques
Réseau
Dio 5.4+
Intercepteurs : auth, logs, retry exponentiel, épinglage de certificat
Base de données locale
Drift 2.18 (SQLite)
GradeSyncQueue, CachedStudent, CachedGrade, UserPreferences
Navigation
GoRouter 14.2+
Routage typé, guards d'authentification, deep links
Stockage sécurisé
flutter_secure_storage
Tokens JWT Sanctum chiffrés, effacement à la déconnexion
Firebase
Analytics + Crashlytics + FCM
Suivi d'usage (avec consentement), rapports de crash, notifications push
Localisation
Intl + gen-l10n
Français et Arabe avec basculement RTL complet
Modèles immuables
Freezed + JSON serializable
Génération de code : equatable, copyWith, fromJson/toJson

Notifications push Firebase

L'application reçoit des alertes en temps réel via Firebase Cloud Messaging pour tenir les utilisateurs informés des événements importants.

📊 Nouvelles notes

Les parents reçoivent une notification dès qu'un enseignant publie les résultats d'une évaluation pour leur enfant.

🚫 Absences

Alerte immédiate aux parents lors de l'enregistrement d'une absence non justifiée pour leur enfant.

💳 Paiements

Confirmation de réception de paiement et rappels pour les échéances de frais de scolarité.

🔔 Système

Alertes de mise à jour obligatoire, maintenance programmée et communications de l'établissement.

Objectifs de performance

L'application est conçue pour des contraintes réseau variables, typiques des établissements scolaires marocains.

<5s
Démarrage à froid jusqu'au tableau de bord (4G)
<300ms
Transitions entre écrans
<2s
Réponse aux appels API
<30s
Synchronisation notes hors-ligne à la reconnexion
1.000
Utilisateurs simultanés supportés
<50 MB
Taille maximale du bundle d'installation

Sécurité & Protection des données

Mesures de sécurité

  • Authentification Sanctum — tokens JWT chiffrés dans le keystore natif
  • Épinglage de certificat HTTPS — protection contre les attaques MITM
  • Limite de 3 sessions actives simultanées par compte
  • Expiration des tokens après 30 jours (purge auto après 7 jours d'inactivité)
  • Blocage des captures d'écran dans le gestionnaire de tâches (masquage des données)
  • Limite de taux : 60 requêtes / minute par utilisateur authentifié

Conformité & Confidentialité

  • Conformité Loi 09-08 marocaine sur la protection des données personnelles
  • Consentement explicite requis pour Firebase Analytics
  • Suppression des données locales à chaque déconnexion
  • Gestion des sessions actives avec révocation possible depuis l'app
  • Rapports de crash Crashlytics anonymisés (sans données personnelles)
  • Cibles d'accessibilité : contraste 4.5:1 WCAG, zones de toucher min. 48dp

Clean Architecture Feature-Based

Le code est organisé par couche puis par module fonctionnel pour une séparation des responsabilités maximale et une testabilité optimale.

🏗️ Couche Domaine

Entités métier (User, Student, Grade, Payment…) et interfaces de repositories abstraites, sans dépendance sur Flutter ou le réseau.

💾 Couche Données

Implémentations des repositories : sources locales Drift/SQLite, sources distantes via Dio REST, et synchronisation des données.

🎨 Couche Présentation

Widgets Flutter + Riverpod providers. Chaque feature contient ses propres écrans, controllers et providers dans un dossier dédié.

🔧 Couche Core

Utilitaires partagés : client réseau Dio, thème, gestion des erreurs, stockage sécurisé, analytics et rapport de crash.

Clean Architecture Feature Modules Repository Pattern Riverpod 2.x GoRouter Drift + SQLite Freezed Build Runner flutter gen-l10n firebase_core Crashlytics FCM

Découvrez l'app mobile en action

Demandez une démonstration de l'application mobile et voyez comment vos enseignants et parents l'utilisent au quotidien.

Demander une démo ← Tous les modules