yHealth

  • React Native
  • Python
  • Arduino

Prototype for an interactive health education app — offers competitive CPR game integrated with a physical CPR simulation device. First place winner in the Spring 2025 Cornerstone Design competition at the Colorado School of Mines.

Background

At the Colorado School of Mines, Cornerstone Design (EDNS151) is a required class for all students. In the class, students, in groups of five, are given a call for proposals—an open-ended prompt for student projects. Everyone spends the rest of the semester designing and building a solution that addresses the call for proposals. At the end of the semester, each group’s projects are evaluated by a group of judges, and then the best team (out of five teams) in each section advances to a competition against the best teams from each of the 32 sections.

I worked with Jaylene Khourn, Matthew Xiong, and Anthony Xu to design yHealth, a health education app for high-school students that has units on a variety of subjects, each with an interactive component. For the final prototype, we designed the first unit, teaching basic CPR skills, which has an interactive CPR game, which evaluates the accuracy of users’ depth and timing as they perform CPR against one another.

Features & Tech

yHealth App Screenshots

The app was built with Expo and React Native, and we opted to use React Native Async Storage for storing user and leaderboard data, rather than a separate backend, for our prototype.

To communicate with the Arduino and its sensors, the Arduino outputs the depth of compression data, collected by the ultrasonic sensor, to serial output. Then, a WebSocket server, created with the Python WebSockets Library, mirrors that output to all clients. This was a simple solution that uses technology and tools that I was already familiar with, but for a full-scale design, bluetooth would be a better solution, as it would be more convenient for users.

For this project, I got to get experience with a variety of React Native tools, including Reanimated, and Lottie. These tools were really nice to work with, and I enjoyed using them to add fun details to the app, like the bird animation during the CPR game.

Finally, we used Groq to add AI-generated feedback to the CPR game. This is a really neat feature, and we really wanted to have it in our prototype, but it would need to be refined for a full-scale solution, because it sometimes gives confusing or misleading feedback to users.

As I mainly worked on the app, the biggest challenge I faced was getting real-time data from the Arduino fast enough to be able to calculate accurate depth and frequency data from it. Initially, the app would crash due to being updated too frequently, but we were able to remedy this issue by grouping 10 depth data points on the Arduino, and sending them together (rather than as 10 separate messages). This allowed us to significantly increase the amount of data being collected (we went from one data point every 200ms to one every 50ms), which let us accurately calculate the frequency of compressions.

Competition

yHealth Presentation Poster for Cornerstone Design

Each of the presentations we did was an excellent experience. Following HackCU 2025 and Blasterhacks 2025, I was confident and familiar with the science fair-like format of presenting a demo to a single judge. Additionally, since we had truly created something unique, interesting, and applicable to the call to proposals, it was not difficult for us to find answers to the judges’ questions, such as the challenges we faced, our future plans for the project, and the stakeholders we worked with to design the app.

Cornerstone Design Winning Team Photo

I am very grateful for having the opportunity to work with Jaylene, Matthew, and Anthony for the semester as we designed and built this project. Being in a team where we all feel comfortable and trust each other was vital to our success, as it helped each of us learn a lot in a collaborative environment. Thank you.