What it does

EarnedIt helps students protect focus sessions by combining app blocking and on device eye tracking. During a session, the app uses the phone camera to estimate attention signals locally, blocks distracting apps, tracks focus quality, and rewards successful study time with points and earned app time. To keep users engaged, successful users can grow pets, compare progress with friends, and review insights about their habits.

How we built it

We built EarnedIt as a native Android app using Kotlin and Jetpack Compose. The ML pipeline runs on-device and uses camera-based attention signals such as face presence, eye openness, gaze, and head pose. We added calibration so the app can learn the user’s normal study position before a session starts. For social features, we used Supabase to store usernames, friend requests, friend lists, and leaderboard data. The app also includes persistent local state, demo mode, onboarding, pet evolution, session results, and focus analytics.

Inspiration

We built EarnedIt because we are all students who struggle with the same problem: sitting down to study, opening our phones “for one second,” and losing focus before we even notice it happened. Existing focus apps mostly rely on just timers or app blockers, but they do not really understand whether you are actually focusing and doing the work that is needed. We wanted to build something that felt more personal, motivating, and honest.

Challenges we faced

The hardest parts were making the attention tracking feel reliable, merging multiple branches while different teammates were working on ML and UI at the same time, and turning raw focus data into an experience that students would actually want to use. We also had to solve practical issues like Gradle configuration, persistent onboarding state, Supabase API keys, friend data, app blocking permissions, and keeping the UI polished across flows.

APK file can be found in the second GitHub link below.

Built With

  • camerax
  • gradle
  • jetpack
  • kotlin
  • litert
  • mediapipe
  • supabase
Share this project:

Updates