Web Bluetooth Medical Dashboard
Full-stack ASP.NET Core dashboard connecting to real BLE hardware (heart rate monitors, thermometers, ESP32 sensors) via the Web Bluetooth API
THE PROBLEM
Final project for CSI418L, Web Programming Lab Expo. The goal was a working web app that talks directly to real Bluetooth LE hardware, heart rate monitors, thermometers, and custom ESP32 sensors, straight from the browser, while also demonstrating a proper server-side stack: authentication, a database, and LINQ-driven data processing. Apple Watch data doesn't fit that model since HealthKit isn't reachable from a browser, which is the one path that needed a native companion app.
SYSTEM DESIGN
ENGINEERING DECISIONS
Web Bluetooth API for direct hardware access
The Web Bluetooth API connects to BLE devices straight from the browser and parses their GATT characteristics, so the heart rate monitor, thermometer, and ESP32 sensors could all be read live without any native driver or companion app.
ASP.NET Core MVC for the actual application
The dashboard needed real accounts, a database of historical readings, and server-side data processing, not just a live BLE view. ASP.NET Core MVC with Entity Framework and LINQ handled auth, storage, and the aggregation queries (grouping, filtering, statistical summaries) the course required.
A native iOS companion app for Apple Watch data
The Web Bluetooth API can't reach HealthKit, Apple Watch heart rate and wrist temperature never surface as a browser-readable GATT characteristic. So that path runs outside the browser entirely: a SwiftUI iOS app authorizes and observes HealthKit in real time, then POSTs readings to a dedicated ASP.NET endpoint (session-authenticated for the logged-in browser flow, or API-key-authenticated for a standalone iOS login) that folds them into the same dashboard and historical store as the direct-BLE readings.
OUTCOMES
- 01Live BLE connections to heart rate monitors, thermometers, and ESP32 sensors from the browser
- 02A companion iOS app that authorizes HealthKit, observes heart rate and wrist temperature in real time, and syncs them to the dashboard
- 03Real user accounts and persisted historical readings via ASP.NET Core + a database
- 04LINQ-driven aggregation: grouping, filtering, and statistical analysis of stored readings
- 05JSON and XML export (LINQ to XML)
- 06Deployed live on Render
STACK
ASP.NET Core MVC (.NET 10, C#) · LINQ · PHP · Web Bluetooth API · jQuery · Bootstrap 5 · Docker · Swift · SwiftUI · HealthKit