Case study
KBCL platform
Cross-platform student app for KBCL: courses, video lessons, quizzes, exams, and certificates—with BLoC, secure device checks, and EN/AR localization.
Technologies
About This Project
<p><span style="font-size: 36px; color: rgb(59, 130, 246);"><strong>K</strong></span><span style="font-size: 32px; color: rgb(59, 130, 246);"><strong>BCL Student Mobile</strong></span><span style="font-size: 32px;"> </span><br><strong>i</strong><span style="font-size: 16px;"><strong>s a production-oriented Flutter application for learners on the KBCL platform</strong>.</span><br><br>It delivers the full student journey: authentication (login, signup, password flows, OTP), <br><br>a home experience for discovering content, detailed course (“level”) screens with enrollment and activation, lesson playback with screen-protection for sensitive content, structured quizzes and final exams with results, and a certificates area for viewing and handling certification assets. <br><br>Legal and informational screens (privacy, terms, about), profile updates, and app settings—including <span><strong>light/dark theme</strong></span> and <span><strong>separate UI vs content language</strong></span>—support a polished, localized experience.<br></p><p>The app is built with <span><strong>feature-first Domain-Driven Design</strong></span>: each feature splits into <span><strong>domain</strong></span> (entities, repository contracts, use cases), <span><strong>data</strong></span> (repositories, Freezed models, remote sources behind a central <span><strong>Dio</strong></span> client), and <span><strong>presentation</strong></span> (<span><strong>flutter_bloc</strong></span>). <span><strong>go_router</strong></span> handles navigation; <span><strong>get_it</strong></span> / <span><strong>injectable</strong></span> wire dependencies. Networking is centralized; =<br>errors are mapped for consistent user-facing messages. <span><strong>easy_localization</strong></span> drives <span><strong>English and Arabic</strong></span>; typography uses <span><strong>Lexend</strong></span> and <span><strong>Cairo</strong></span>. Additional concerns include <span><strong>device safety checks</strong></span> (blocking flow on unsafe devices), <span><strong>device identity</strong></span> for API trust, <span><strong>secure storage</strong></span>, and a <span><strong>custom fork of youtube_player_flutter</strong></span> tailored for KBCL’s lesson player needs.</p><p>Technically, the stack emphasizes maintainability and testability: <span><strong>Freezed</strong></span> + <span><strong>json_serializable</strong></span>, <span><strong>Equatable</strong></span>, <span><strong>reactive_forms</strong></span>, and shared <span><strong>core</strong></span> modules for routing, theme (<span><strong>AppText</strong></span>, color extensions), and status/error helpers—suitable to showcase as a serious mobile engineering sample on a portfolio site.<br></p>