Inspiration

Alex Chen is a 47-year-old biology teacher in Hamilton with ALS. A major issue Alex is facing is right foot drop that initially began with his foot catching on curbs. This issue did not improve with physiotherapy, which is what first prompted doctors that there may be a more serious underlying issue. In the last 3 months, he has experienced two falls, with stairs being the main hazard.

So far, all of his falls have occurred in the evening, when he is fatigued. His current ankle foot orthosis (AFO) is unable to provide varied amount of support throughout the day. His past fall while leaving school with his AFO on shows that his current brace is unable to prevent his falls. We wanted to make a support that notices when he is tired and helps by pulling up the front of his foot when he needs it, reducing his foot drop and risk of catching his foot on surfaces.

What it does

Elevait is an adaptive AFO with a dashboard and backend for easy communication and future prediction.

  • A Raspberry Pi with an accelerometer on the calf streams ankle-angle samples and detected steps to our backend.
  • Family view: a plain-language status sentence, brace wear status, a timeline of stair movement and possible falls, a weekly stability score, and check-in alerts when a near-trip happens
  • Physician view: a live ankle-angle trace, toe clearance against a 2 cm target, assist level, 7/30/90-day comparisons, 90-day progression charts with clinic visit markers, a 14-day by hour clearance heatmap, similar-day matching, a 90-day gait forecast with uncertainty bands, and Gemini-generated reports.
  • PhysioNet replay: real foot-force data replays in the live trace

How we built it

Hardware. A Grove MMA7660FC accelerometer on a Raspberry Pi over I2C, mounted on the calf. A Python streamer low-pass filters the accelerometer to isolate gravity, then computes shank pitch relative to a standing calibration.

Backend. Next.js 16 with a custom Node server that serves both the app and a /ws WebSocket, which pushes live samples before the database write finishes. Data is held in Tiger Data (TimescaleDB): hypertables for samples and steps, continuous aggregates for hourly and daily rollups, compression and retention policies, Toolkit hyperfunctions for percentiles, LTTB downsampling and forecast fitting, and pgvector with a DiskANN index for similar-day search.

Stability score. We built a composite 0 to 100 score from toe clearance, peak dorsiflexion against Alex's baseline, stride variability against PhysioNet healthy controls, stair near-trips, and how much assist the brace is giving.

Data. A seed script generates 90 days of synthetic gait history, with stride timing driven by real ALS and control stride intervals from the PhysioNet Gait in Neurodegenerative Disease Database. A 100 Hz simulator posts the same data the Pi does.

Frontend. React 19, Tailwind CSS 4, Motion for animation and Recharts for charts, with the live trace drawn on a canvas. Gemini 2.5 Flash writes physician and family reports from aggregates. Playwright covers view switching, live-trace motion, filters, report sheets, alerts, reduced motion and the replay.

Challenges we ran into

  • Measuring the ankle with one cheap sensor. A single shank accelerometer does not measure the ankle directly, and we had no distance sensor for toe clearance. We used filtered shank pitch as a proxy and estimated clearance linearly from peak swing, then recalibrated the constants after testing.
  • A smooth 50 Hz live trace. Our first SVG chart stuttered and the whole dashboard re-rendered every second. We moved the trace to a canvas with frame-timed scrolling, published samples before the database write, and memoized views so switching tabs did not remount every chart.
  • Time-series SQL. Getting continuous aggregates, compression policies and Toolkit hyperfunctions to work together, and refreshing rollups after reseeding, took a lot of iteration.
  • Tests that kept up with the UI. After we added collapsible section navigation, our Playwright suite broke. The controls sat in hidden, inert sections and fake clocks stopped the exit animations. We fixed every case so the suite passes 9 of 9.

Accomplishments that we're proud of

  • An end-to-end pipeline: Raspberry Pi sensor to ingest API to TimescaleDB to live WebSocket dashboard.
  • Grounding the demo in real data: PhysioNet ALS and control stride intervals, and a replay of a real ALS patient's foot force.
  • Two views that respect two different people: a lay-ma family view and a data-dense physician view.
  • A 90-day forecast, similar-day search and percentile bands computed in the database rather than in app code.
  • AI reports that are honest about their limits, with clear "not medical advice" framing.

What we learned

  • Time-series databases change what is practical: continuous aggregates and compression make months of step-level data feel instant.
  • Designing for a real person shaped every decision. Alex refused a stool, a microphone and a stairlift, so the brace had to be invisible and the alerts had to be calm.
  • Prompting a medical summarizer is mostly about constraints: what the model must never say matters more than what it should say.
  • Being clear about synthetic data, measured data and clinical interpretation is part of building health tech responsibly.

What's next for Elevait

  • Real actuation: add a motor or variable-stiffness joint so assist actually rises as clearance drops.
  • Better sensing: add a second IMU on the foot and a time-of-flight sensor to measure ankle angle and toe clearance directly, plus stair detection.
  • Clinical validation: work with physiotherapists to test whether the stability score and forecasts match what they see in clinic.
  • Production readiness: authentication, role-based access for family and physicians, multi-patient support and privacy safeguards for health data.

Built With

Share this project:

Updates

Submission history