Masroufi
Eine vollständige mobile Recruiting-Plattform, die Bewerber, Recruiter und Admins verbindet — entwickelt mit Flutter und Clean Architecture.
Eine vollständige mobile Recruiting-Plattform mit Flutter, Clean Architecture und BLoC, die drei verschiedene Benutzerrollen unterstützt.
Masroufi ist eine umfassende mobile Recruiting-Plattform, die mit Flutter entwickelt wurde und drei verschiedene Benutzerrollen im selben System unterstützt: Bewerber, Recruiter und Administratoren.
Bewerber können Stellen durchsuchen, suchen, filtern, speichern und sich bewerben – mit einem vollständigen Bewerbungs-Tracking-Dashboard mit den Status Ausstehend, Angenommen und Abgelehnt. Recruiter verwalten ihre Stellenangebote und prüfen Bewerberprofile. Admins haben ein systemweites Verwaltungspanel.
Das Projekt verwendet Flutter-Architekturmuster auf Produktionsniveau — Clean Architecture mit funktionsbasierter modularer Struktur, BLoC/Cubit für skalierbares State Management und JWT-Authentifizierung mit automatischer Token-Aktualisierung über Dio-Interceptoren.
Hauptfunktionen
Drei-Rollen-System
Eigenständige Erlebnisse für Bewerber, Recruiter und Admins – jeweils mit eigenen Dashboards, Berechtigungen und Navigationsflüssen.
Bewerbungs-Tracking
Bewerber verfolgen jede Bewerbung in Echtzeit mit Statusupdates (Ausstehend, Angenommen, Abgelehnt) und Recruiter-Feedback.
Sichere JWT-Authentifizierung
Automatische Token-Aktualisierung über Dio-Interceptoren mit sicherer Speicherung via FlutterSecureStorage — nie in SharedPreferences.
Offline-Caching mit Hive
Hive-lokaler Cache hält die App auch bei schlechter Konnektivität funktionsfähig und reduziert unnötige API-Aufrufe.
Echtzeit-Recruiter-Chat
WebSocket-basierter Nachrichtenkanal zwischen Recruitern und Bewerbern für direkte In-App-Kommunikation.
Tech-Stack
Architektur
Die App folgt Clean Architecture mit drei Schichten: Data, Domain und Presentation. Features sind vollständig modular — jedes Feature ist ein eigenständiger Ordner mit eigenen Schichten.
JWT-Tokens werden über einen Dio-Interceptor verwaltet, der 401-Antworten automatisch erkennt und die ursprüngliche Anfrage nach einem Refresh erneut sendet. Sichere Tokens werden mit FlutterSecureStorage gespeichert.
Herausforderungen & Lösungen
Die schwierigen Probleme — und wie ich sie gelöst habe.
Drei Rollen ohne Komplexitätsexplosion verwalten
Drei völlig unterschiedliche Nutzererlebnisse in einer App drohte eine unübersichtliche Codebasis zu erzeugen. Gelöst durch RBAC auf UI- und Repository-Ebene mit funktionsbasierter modularer Struktur.
JWT-Refresh Race Conditions bei gleichzeitigen Anfragen
Mehrere simultane API-Aufrufe beim Token-Ablauf verursachten eine Race Condition. Behoben durch eine Request-Queue im Dio-Interceptor: der erste 401 löst einen einzigen Refresh aus, alle wartenden Anfragen werden mit dem neuen Token fortgesetzt.
Cross-Feature-Zustandssynchronisation ohne enge Kopplung
Wenn ein Recruiter eine Bewerbung annimmt, musste die Bewerber-Liste aktualisiert werden – obwohl es separate Module sind. Gelöst mit einem geteilten Event-Bus-Muster.
Weitere Projekte
ExtMig
Ein Open-Source-Entwicklerwerkzeug zur Verbesserung von Migrations-Workflows und Produktivität für moderne Entwicklungsteams.
Cat'aloge
Eine KI-gestützte mobile App, die automatisch Ihre Galerie durchsucht und Tierfotos mithilfe vollständig auf dem Gerät laufender TensorFlow Lite-Inferenz organisiert.
Accident Risk Navigator
Eine KI-Full-Stack-Plattform, die Unfallrisiken basierend auf Straßen- und Wetterbedingungen vorhersagt und Risikozonen auf interaktiven Karten visualisiert.
Interesse an einer Zusammenarbeit?
Ich bin immer offen für Gespräche über neue Projekte und Möglichkeiten.