Inspiration
An ECG strip is one of the most important pictures in medicine and one of the least intuitive. I wanted to put a strap on and watch my own heart, chamber by chamber, do exactly what the trace says it is doing, right now in real time.
What it does
CardioView turns a Polar H10 chest strap into a live 3D heart in the browser. You connect your own strap over Web Bluetooth, the server finds every beat, and an anatomical heart model squeezes in sync: P wave for the atria, QRS for the ventricles. Next to it sit the live trace, heart rate and a chamber timeline. Exercise mode runs a guided session with voice prompts and prints a report on real ECG paper with a QR code. Gemini heart takes a sentence like "a 40 year old on cocaine" and turns it into a rhythm recipe the simulator plays on the same heart.
How we built it
Python and FastAPI, one pipeline per viewer, so any number of straps work at once. NeuroKit2 finds beats on a rolling 8 second window at the strap's native 130 Hz, stamped in stream time so the heart squeezes when the R wave crosses the now line. The heart is Three.js with a vertex shader that weights every vertex by its distance to each chamber. Gemini runs in JSON mode against a fixed schema with every value clamped. 160 tests, and a public copy on Render.
Challenges
The first 30 seconds off the strap are junk, so a signal monitor separates lost, pads and streaming, and the heart stops instead of lying. Chrome lists the strap twice. A WebSocket reconnect after a deploy produced a false "Not connected" until the page learned to re-send its state. And I tore the design down twice before landing on one dark surface where the heart is the only bold thing.





Log in or sign up for Devpost to join the conversation.