Inspiration

We were inspired by the Pomodoro study technique first and foremost, which encourages a mindful and organized approach to studying by alternating periods of intense focus and brief breaks. We were also interested in working with eye tracking tools (and maybe a little inspired by those videos where people have their laptop pull up a bunch of memes if it sees them go on their phone).

What it does

After the user creates an account and logs in, they can run a study timer for a period of time that they decide while the eye tracking tool tracks their gaze, making sure they're looking at their computer screen. If their gaze wanders for too long, the app will sound an alarm encouraging them to refocus. Once a study session finishes, the user will automatically enter a break and be able to relax. Over time, we hope the app can improve how long the user can naturally focus on important tasks, and they can look back at previous study session logged in their account to see just how far they've come!

How we built it

The eye tracking tool itself, run as a standalone executable, uses OpenCV for vision tracking and PyGame for the interface. It implements a Python library called eyetrax for gaze calibration and tracking; we adjusted the code from this library for onscreen and offscreen calculations to make sure the focus tracking is captured as accurately as possible, and minimize the chance of a false alarm from the system. Meanwhile, the web application itself is a Flask application hosted using a DigitalOcean droplet. Finally, we created a database using MongoDB to implement the account system within the web application, storing both login information and study session history.

Challenges we ran into

The main challenge we faced was implementing a working eye tracking tool to accurately capture the user's focus. We tested a number of different tools and libraries; initially we were considering using the Presage C++ SDK for camera focus tracking, but we were running into too many issues and had to look for alternative methods. Integrating the two parts of the app was also a bit difficult, but we managed to create a solution where the webapp and Python GUI work separately but in tandem.

Accomplishments that we're proud of

We're really proud of the eye tracking functionality itself and how well it ended up working with the onscreen and offscreen gaze tracking. We're also proud of creating a fully functioning webapp connected to a database that we were able to effectively host on DigitalOcean.

What we learned

We learned a lot about computer vision for gaze tracking, building Flask applications with complex, consistently updating visual components, and publicly hosting applications on DigitalOcean.

What's next for Pomo

Ideally, we would love to have the full functionality of Pomo be contained within the webapp so that the Pomo GUI itself doesn't have to run as a separate connected application. This would be a lot easier for users to work with, since everything would be in one place, and would make Pomo a lot more accessible.

Share this project:

Updates

Submission history