Masroufi
Plateforme mobile de recrutement complète connectant candidats, recruteurs et administrateurs : construite avec Flutter et Clean Architecture.
Une plateforme mobile de recrutement complète construite avec Flutter en Clean Architecture et BLoC, supportant trois rôles utilisateurs distincts.
Masroufi est une plateforme mobile de recrutement complète construite avec Flutter, conçue pour supporter trois rôles utilisateurs distincts dans le même système : candidats, recruteurs et administrateurs.
Les candidats peuvent parcourir, rechercher, filtrer, sauvegarder et postuler à des offres avec un tableau de bord complet de suivi des candidatures affichant les états En attente, Accepté et Refusé. Les recruteurs gèrent leurs offres d'emploi et examinent les profils des candidats. Les administrateurs disposent d'un panneau de gestion à l'échelle du système.
Le projet applique des patterns d'architecture Flutter de niveau production : Clean Architecture avec structure modulaire par fonctionnalité, BLoC/Cubit pour une gestion d'état évolutive, et authentification JWT avec rafraîchissement automatique des tokens via les intercepteurs Dio. La mise en cache locale avec Hive maintient la réactivité de l'application en cas de mauvaise connectivité.
Fonctionnalités clés
Système à trois rôles
Expériences distinctes pour les candidats, recruteurs et admins : chacun avec ses propres tableaux de bord, permissions et flux de navigation.
Suivi des candidatures
Les candidats suivent chaque candidature en temps réel avec des mises à jour de statut (En attente, Accepté, Refusé) et les retours du recruteur.
Authentification JWT sécurisée
Rafraîchissement automatique des tokens via les intercepteurs Dio avec stockage sécurisé via FlutterSecureStorage : jamais en SharedPreferences.
Cache offline avec Hive
Cache local Hive maintenant l'application fonctionnelle en cas de mauvaise connectivité et réduisant les appels API inutiles.
Chat recruteur en temps réel
Canal de messagerie WebSocket entre recruteurs et candidats pour une communication directe dans l'application.
Stack technique
Architecture
L'application suit la Clean Architecture avec trois couches : Data, Domain et Presentation. Les fonctionnalités sont entièrement modulaires : chaque fonctionnalité est un dossier autonome avec ses propres couches.
Les tokens JWT sont gérés via un intercepteur Dio qui détecte automatiquement les réponses 401 et relance la requête originale après rafraîchissement : transparent pour le reste de l'application.
Défis & Solutions
Les problèmes complexes, et comment je les ai résolus.
Gérer trois rôles sans explosion de complexité
Race conditions JWT lors de requêtes concurrentes
Synchronisation d'état cross-feature sans couplage fort
Plus de projets
Intéressé par une collaboration ?
Je suis toujours ouvert à discuter de nouveaux projets et opportunités.