LearnMate (Mobile-Based Android App) — LearnMate tutee, tutor and admin screens

LearnMate (Mobile-Based Android App)

Mobile App
Dart
Flutter
Agora
Codebase Scale~8,500 LOC

Highly modular Flutter & Dart codebase

Development Time120 Hours

End-to-end design, implementation & QA

Core Modules12 Modules

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

Phase 1: Wireframing & UX MapWeek 1

Requirement Gathering & UX Architecture

Designed key mobile views and mapped out tutor-student appointment and video stream session flows.

Phase 2: Core Frontend & Client SetupWeeks 2-3

Flutter UI Composition & Local Caching

Developed highly modular components in Dart, establishing responsive client layouts and internal application routing.

Phase 3: Real-Time Engine & Live streamsWeek 4

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.

Phase 4: Optimization, Security & QAWeek 5

Stress Testing & Performance Fine-Tuning

Debugged low-bandwidth exceptions and tuned device audio latency, resulting in a successful release candidate.

Demo Videos

Demo 1
Demo 2

    Meshary AI

    Gemini 2.5 Flash

    Portfolio Assistant

    Hello! I'm Meshary AI, your interactive portfolio assistant powered by Gemini. Ask me anything about Meshary's software projects, n8n automation workflows, or technical skills!

    12:33 PM