LearnMate (Mobile-Based Android App)
Highly modular Flutter & Dart codebase
End-to-end design, implementation & QA
Session bookings, in-app messaging, Agora video SDK
About the Project
Learnmate is an Android-based mobile application designed to streamline remote learning and tutoring. It enables tutors and tutees to connect, communicate, and collaborate through an intuitive interface that supports session booking, in-app messaging, and video conferencing — all from a mobile device. The goal was to create a seamless and accessible platform for education, breaking down geographical barriers. The platform runs on three roles. Tutees post subject-tagged requests for help and pay for enrolled classes via GCash; tutors browse that request feed and apply to teach, submitting credentials (diploma and transcript of records) for review; and an admin console approves pending tutor applications while tracking user and lesson activity across the platform. Accounts are verified by one-time passcode on signup.
Challenges
One of the main challenges was implementing a reliable and low-latency video conferencing feature within the app. Integrating the Agora SDK required careful handling of state management and native platform differences. Another challenge was designing an intuitive booking system that could handle multiple time zones and tutor availability.
Learnings
This project was a deep dive into cross-platform mobile development with Flutter and Dart. I gained significant experience with real-time communication technologies and third-party SDK integration. I also learned a lot about UX/UI design for mobile applications and the importance of user feedback in the development cycle.
What I'd Do Differently
Leaning on the Agora SDK got working video far sooner than raw WebRTC would have, but it put a paid third-party dependency at the centre of the core feature and let its native state handling leak into the widget tree. I would isolate it behind an interface so the call engine is swappable and testable without a live session. The clearer mistake was storing session times as local device time: the booking flow works until a tutor and tutee are in different zones, and persisting UTC while rendering in the viewer's zone costs almost nothing on day one and a great deal to retrofit.
Development Journey
Requirement Gathering & UX Architecture
Designed key mobile views and mapped out tutor-student appointment and video stream session flows.
Flutter UI Composition & Local Caching
Developed highly modular components in Dart, establishing responsive client layouts and internal application routing.
Agora RTC Native Integration & Firestore Hooks
Wired up the Agora SDK wrapper for stable on-device live video tutoring feeds and coupled session metadata with cloud triggers.
Stress Testing & Performance Fine-Tuning
Debugged low-bandwidth exceptions and tuned device audio latency, resulting in a successful release candidate.
