As students in the COVID-19 pandemic, we have experienced firsthand how difficult it is to work remotely. Staring at a computer screen all day is exhausting and promotes unhealthy habits, such as forgetting to stay hydrated, sitting down all day, staring at a screen for hours on end, slouching, etc. In the current situation of the world, it is practically impossible to ditch technology entirely. So rather than reject tech completely, we looked for a solution that embraced technology and used it to its advantage, and thus, studybuddy was born.

What it does

To use studybuddy all a user needs to do is choose the length of their study session and the break schedule they want to follow (i.e. Pomodoro, 20/20 rule, etc.). studybuddy will start a timer for the session and alert the user when it's time to a break (in accordance with the time intervals they chose). Furthermore, studybuddy monitors when the user is focused or distracted by tracking eye movement, notes the user's posture and hydration (reminding the user to fix these when necessary), and allows users to keep track of tasks through a Kanban board where users can create and categorize tasks as "to do," "in progress," or "done."

How we built it

The user-friendly interface and popups were first designed via Figma, then implemented using JavaScript with React. The project was split into various React components and screens for easy reusability and clean partitioning. The facial monitoring, posture checking, and water bottle detection was implemented using TensorFlow and integrated into the user's webcam.

Challenges we ran into

We faced a variety of challenges in making studybuddy. On the user interface side, our team had never worked with draggable components for the Kanban task board. While the actual dragging wasn't too hard to implement, the challenge laid with figuring out how to make tasks move from one board to another, as well as snap into place, rather than allowing the tasks to be placed anywhere on the screen, making for a cleaner, more user-friendly interface.

The biggest challenges we ran into, however, were with the TensorFlow and the camera. Running multiple models made the program very intensive and we struggled to get some models to accurately identify the things they were made to identify for, forcing us to pivot and seek out different models or solutions. Finally, coordinating all the separate components, screens, and functionality was a huge challenge, but nonetheless, super fulfilling to see come together.

Accomplishments that we're proud of

First of all, we are very proud to have come up with a solution to a problem so common to students just like us in these unusual circumstances. Furthermore, we know that studybuddy would only have a healthy and positive impact on users. It was also very rewarding to see everything come together, especially since we were able to get everything to work the way we had intended to.

What we learned

At first, the user interface was very clunky and unintuitive. Through testing and using an iterative development progress, we realized that we, as developers, tend to overlook the importance of well-designed user experience. In learning that, we began testing thinking as the user rather than the developer and redesigned some aspects of the interface accordingly. As a whole, we all agreed that our knowledge of React, TensorFlow, and web development has increased exponentially. We are excited to be able to apply this new experience to future projects.

What's next for studybuddy

While brainstorming for studybuddy, we had to compromise on a few features due to time and technological constraints, however, hope to implement them in the future. These features include:

  • screen monitoring (with user consent)
  • keeping track of when the user goes over their break
  • Google/OutLook/etc. calendar integration
  • database for user profiles, including:
    • saving incomplete tasks for future sessions
    • average statistics
  • make it more accessible by lowering minimum system requirements

Team information

  • Discord channel: team-40
  • Discord usernames: DarkChiron#8525, Univa#2618, velveteer#1674

Built With

Share this project: