En vedette App Mobile 2024

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.

#flutter#recruitment#role-based-access#real-time#clean-architecture

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

FlutterDartBLoCDioHiveFlutterSecureStorage

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é

Trois expériences distinctes dans une seule app risquait de créer une base de code enchevêtrée. Résolu en appliquant le RBAC au niveau UI et dépôt, combiné à une structure modulaire par fonctionnalité.

Race conditions JWT lors de requêtes concurrentes

Plusieurs appels API simultanés lors de l'expiration du token causaient une condition de course. Corrigé avec une file d'attente dans l'intercepteur Dio : le premier 401 déclenche un seul rafraîchissement, toutes les requêtes reprennent avec le nouveau token.

Synchronisation d'état cross-feature sans couplage fort

Quand un recruteur accepte une candidature, la liste du candidat devait se mettre à jour — mais ce sont des modules séparés. Utilisé un bus d'événements partagé pour que les BLoCs diffusent des événements sans s'importer directement.

Plus de projets

ExtMig

Un outil de développement open-source conçu pour améliorer les workflows de migration et la productivité des équipes de développement modernes.

TypeScriptNode.js

Cat'aloge

Une application mobile alimentée par l'IA qui scanne automatiquement votre galerie et organise les photos d'animaux grâce à une inférence TensorFlow Lite entièrement on-device.

FlutterDartTensorFlow LiteRiverpod +1

Accident Risk Navigator

Une plateforme IA full-stack qui prédit le risque d'accident en fonction des conditions routières et météorologiques, et visualise les zones à risque sur des cartes interactives.

ReactTypeScriptPythonTensorFlow +4

Intéressé par une collaboration ?

Je suis toujours ouvert à discuter de nouveaux projets et opportunités.

Jihed Mrouki

Développeur Mobile & Flutter spécialisé dans les architectures évolutives et les solutions mobiles intelligentes.

Me suivre

© 2026 Jihed Mrouki. Tous droits réservés.

Développé avec SvelteKit & TailwindCSS