A powerful productivity tool designed to help users track their habits and enhance focus throughout the week.
Procrastination is a challenge I’ve faced as a student, and I’ve tried manually tracking my progress with a paper calendar but it became hard to maintain. To solve this problem, I built an app that automates focus-time tracking and records it in an intuitive calendar view, making it easy to visualize weekly and monthly progress. I also saw this as an opportunity to learn Android development through a practical project.
I started by identifying must-have features for a productivity app such as creating, updating, and displaying past sessions. I then designed the app’s core functionality and added my own touches. For example, the progress circle acts as both a progress bar and a countdown for the week, tracking sessions and showing remaining time. This creates a sense of regret when time slips away, motivating me to refocus. Similarly, for the calendar view, I drew inspiration from GitHub's heatmap, using green shades to represent daily productivity levels (Image 1).
After designing the app, I built a basic version using Kotlin and Android Studio and invited friends to test it. Feedback revealed the activity customization screen was too plain and lacked personalization. In response, I added custom image selection, expanding from simple color selection to visually engaging activity images. This added both visual appeal and functionality, serving as a mental trigger to help users focus on their tasks (Image 2).
Implementing the custom image feature caused performance issues when loading many images. To fix this, I integrated Glide, an asynchronous image-loading library, which enhanced responsiveness. This allowed users to swipe through and load images seamlessly, ensuring a smooth and user-friendly experience.
One key lesson I learned through the process of building and releasing the app was the importance of deploying early, even if the app isn't fully complete. I waited until the app was feature-complete before deploying, which led to multiple issues, including reimplementing some libraries due to incompatibility with the production environment. Had I deployed earlier, I could have identified and resolved these issues sooner, avoiding unnecessary rework.