The Problem

The COVID-19 pandemic has left nearly all of us working remotely. This means that we’re spending more time than ever in front of computer screens. Research shows that this can lead to increased eye strain and fatigue. As students who will be taking online classes for extended hours in the near future, we saw a chance to solve this problem with data and optimize our daily grinds.

The Solution

To tackle the problem of screen fatigue, we combined the computer vision technology of OpenCV with the usability of a website app. With a Flask backend connecting the Python computer vision app with the user-friendly front end, Blink was born.

Blink is a data-driven wellness and productivity platform that tracks your eye movements and creates intelligent recommendations about optimal times for work and rest. Blink tracks you while you work to see how drowsy you get and how often you leave your screen to rest. If your eyes are getting strained, or if you're not taking enough screen breaks, Blink will send a gentle reminder to your browser notifications.

Blink’s landing page visualizes the user’s eye aspect ratio, which is a measure of their alertness. This graph updates live, showing the user how their data is used in recommendations. Your anonymous eye strain data is constantly stored in our database, which means that Blink is also able to update live and provide notifications when they are most necessary.

With a menu in the top right corner, you can navigate to a video with overlaid information displaying what Blink collects as data. Since Blink uses facial recognition, this video helps you to understand how data is collected from them, and how it relates to the graph displayed on the landing page.

Lastly, the Recommendation page is where Blink provides specific recommendations to users. These recommendations are bolstered by our system of notifications, allowing them to take breaks at optimal times, coming back to their online work well rested, happier, and more productive.

Technology, Tools, and Process

Blink utilizes OpenCV, a Python library that uses artificial intelligence to recognize images. Blink tracks eye movement and the frequency at which each user blinks, gathering data on their individual blinking habits. From this data, it calculates measures of eye strain and recommends breaks when signs of screen fatigue appear. With statistical analysis in pandas, Blink is also able to identify times in the day when users are most and least alert, and provide suggestions on how users should tailor their work schedules to their energy levels. Blink’s backend is built using Flask, and the data collected is stored in PostgreSQL. The frontend is built in HTML/CSS and vanilla Javascript.

Learning and Challenges

Building Blink was an amazing learning experience for all of our members. This hackathon challenged us to level up our product thinking, systems design, and technical knowledge under time pressure.

Technical Knowledge

One of our team members learned OpenCV, PostgreSQL and Flask for the facial recognition and backend elements of this project, tools that our entire team had no experience in. Another of our team members learned about Javascript and statistical analysis in Python with pandas to create the recommendation engine. Our final team member learned about integrating multiple applications to create a full-stack app and analysing large amounts of data in chart.js to create elegant data visualizations.

System Design

We began intending to create this app offline, so that OpenCV would be the only entirely new software we’d have to learn. However, as time went on, we became more ambitious and decided to host Blink online. This meant that we not only had to learn about databases and backends, but also create a robust, full-stack web application, communicating between our front- and backend.

Next Steps

It would be nice to deliver a more complete analysis of wellness and productivity; we’d like to include different measures of fatigue, such as poor posture, to expand Blink’s functionality and enable it to become more robust in its recommendations. Given enough time and data, we'd also like to leverage machine learning for the recommendation engine. This would be a huge undertaking, though, and we'd likely have to generate much of the training data ourselves.

Data security is a very real concern. To ensure that user data is secure, we could add encryption to Blink, ensuring that our users’ data is safeguarded and protected with the best security technology.

Finally, we would like to deploy Blink as a fully-fledged web application on Heroku, enabling anyone who wants to use it to run it whenever they want to. Since Blink can be used by anyone, we want it to be accessible to everyone. Making Blink freely available would help us increase productivity and boost wellness for more people, a goal we’re passionate about and hope to see realized.

Share this project: