A native Android app in Kotlin and Jetpack Compose for discovering courses and campuses, enrolling and paying, with an admin workspace for users, courses and branches.
Project media coming soon
Screenshots and demo videos for this case study will appear here.
Learning Hub connects learners with courses across categories and campus locations. Users register, verify their email, explore course details, find campuses on Google Maps, enrol through a payment step and manage their profile. Administrators maintain users, courses and branches from their own dashboard.
The data model had to represent courses offered at several campuses and turn that relationship into a simple mobile flow covering discovery, enrolment and payment, with separate learner and admin experiences.
I built the app in Kotlin with Jetpack Compose and Material 3. Navigation Compose handles screen flow, Firebase Authentication handles accounts, Cloud Firestore stores the data, and Maps Compose shows campus locations. A shared ViewModel carries the selected course and user through the multi-screen enrolment flow.
The completed app demonstrates end-to-end native Android development with cloud-backed data and role-specific interfaces, across 78 commits.
Every Firestore read and write for users, courses and branches goes through a shared ViewModel, including campus coordinates stored as GeoPoints for the map. Composables never touch Firestore directly, and the multi-step enrolment flow (course details, personal details, then payment) reads its selection from the same place.
Fetched collections are cached in small in-memory stores, so switching categories and filtering courses on the home screen happens instantly without another network round trip.