Android Development · Team of 5 · Winter 2025

MentorMatch

An Android tutor-matching app built in Kotlin — won 1st place at MacEwan's juried showcase, and evolved into Tutle.

MentorMatch home screen showing tutor browse feed
Home
MentorMatch swipe card interface for browsing tutors
Browse
MentorMatch chat interface between student and tutor
Chat
MentorMatch calendar for scheduling tutoring sessions
Calendar

What is it and why it exists

MentorMatch is a swipe-based Android tutoring application with real-time chat, appointment scheduling, premium tiers, and an AI assistant. What started as a course project became something the team actually wanted to ship. We won first place at MacEwan's juried showcase, presented at Research Day, and the project continued into CMPT 496 as Tutle.

Role

UI/UX Developer & QA — authentication, onboarding, navigation, chat UI, test suite, git recovery

Timeline

One semester, Winter 2025

Outcome

1st place at juried showcase. Selected to continue as Tutle in CMPT 496.

Built with

Language

  • Kotlin

UI

  • Jetpack Compose
  • Material Design 3
  • Animated navigation

Backend

  • Firebase
  • Firestore
  • MVVM

Testing & Tools

  • JUnit
  • Espresso
  • Compose UI Test
  • MockK
  • JaCoCo
  • Git / GitHub
  • Android Studio

The vision shift

MentorMatch started as a Software Engineering course project with a defined scope: build an Android app that connects students with tutors. About halfway through, the team realized the app could become a real product and raised the bar accordingly. We won first place at MacEwan's juried showcase, presented at Research Day, and the project continued into CMPT 496 rebranded as Tutle — a research-validated student-tutor marketplace.

The shift

Around the second sprint, the project stopped feeling like a course requirement and started feeling like something worth actually building. The core idea was solid; students needed better access to tutors, and tutors needed a way to be found. As a student who'd been through that search myself, that felt like a problem worth solving properly.

What I built

Navigation

Designed a custom animated navigation bar in Figma and implemented it in Jetpack Compose. Each tab has its own accent color; selecting a tab expands it into a labeled pill with a spring animation. The component is role-aware, showing different tabs depending on whether the logged-in user is a student or tutor.

Authentication & Splash

Redesigned the login screen using random dynamic video backgrounds in both landscape and portrait mode across phones and tablets. Added keyboard Tab/Enter navigation to the login form and updated the splash screen with the final app branding.

Chat & Matching UI

Added profile pictures to the chat list and chat detail screens, with fallback logic showing either a first initial or a Person icon if no photo is set. Updated the match animation with a fire icon, adjusted the display timing, and tuned the existing particle system.

UI/UX Polish

Consolidated the logout button from every screen's top bar into a single location in Settings, with a confirmation dialog to prevent accidental sign-outs. Updated tab labels, payment plan pricing, and profile card positioning to better match user expectations. Added a separate logout button with custom styling to the admin screen.

Testing

Rebuilt the entire automated test suite from scratch after significant feature changes made the original tests obsolete. Covered individual components, user flows, and end-to-end scenarios across 53 files and 7,627 lines of code.

Git Recovery

Recovered the project from multiple version control incidents using git reflog and cherry-picking specific commits to restore lost work without disrupting the main branch.

Animated navigation bar Figma design
Figma design
Implemented
Phone
Tablet
Match animation

What came out of it

🥇 1st Place, Juried Showcase

Took first place at MacEwan's juried showcase against groups from two competing classes, with second place also going to our class. The project was selected to continue into CMPT 496 as Tutle.

Research Day

Presented at MacEwan's Student Research Day, covering the competitor analysis: existing platforms are US-based with curricula and pricing that don't map well to Canadian students, leaving a significant gap in the market.

Utility Player Role

Stepped outside my defined role repeatedly to fill gaps: debugging, testing, version control recovery, and whatever else needed doing to get the app to submission quality.

Kotlin & Jetpack Compose

First experience with Kotlin and Jetpack Compose, coming from a background in C and Python. Building animated, stateful UI components in a declarative framework meant learning a new way of thinking about how interfaces are structured and updated.

← View All Projects