← Alle Projekte
Highlight Mobile-App 2024

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.

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

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

FlutterDartBLoCDioHiveFlutterSecureStorage

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.

01

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.
02

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.
03

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.

Interesse an einer Zusammenarbeit?

Ich bin immer offen für Gespräche über neue Projekte und Möglichkeiten.