The Portfolio

One hub, a growing set of devices. Each device exists because it answers a data question the hub cannot answer without it — not because the hardware was interesting on its own.

Live — App Store & Google Play

MyFitnessTech

The hub — every stream in one profile, with coaching on top

The center of gravity for everything Fitness Tech builds: a cross-platform Flutter application that consolidates workouts, nutrition, sleep, hydration, heart rate, and general health metrics into a single profile with an interactive dashboard. Critically, it stands entirely on its own.

Start with the app — the devices plug in later.

Why it stands on its ownNo hardware required

A user with no Fitness Tech hardware can download it today and log everything manually — the devices simply make that logging automatic. That means the hub grows its user base independently of hardware manufacturing timelines, and every device we ship later arrives to an app that already has users.

What it doesDashboard, rep counting, BLE, AI coaching
  • Unified dashboard across workouts, nutrition, sleep, hydration, and biometrics
  • Real-time exercise detection and automatic rep counting
  • Direct BLE connection to Fitness Tech hardware
  • AI coaching that adapts to your history, sport, and goals
  • Works fully standalone — no hardware required
  • Local persistence today, cloud sync in development
Technical stackFlutter, custom BLE GATT service, Material 3
Framework
Flutter (Dart) — iOS, Android, macOS
Architecture
Three layers: Models → Services → Screens
Device link
Custom BLE GATT service; CSV sensor streaming
State management
StreamController broadcast streams (no external state library)
Persistence
Local storage with JSON serialization; cloud sync in development
Exercise detection
Accelerometer state machine, per-exercise thresholds
Intelligence layer
Coaching assistant across all logged streams; ML classification in development
Design
Material Design 3, dark theme, green accent
What the intelligence layer is forQuestions no single-purpose device can answer

Centralizing data is only the first half. The reason it matters is that once every stream lives in one profile, questions become answerable that no single-purpose device can touch: why did output drop this week, what changed before the last three good sessions, is this athlete recovering or accumulating fatigue.

The coaching layer reasons across workouts, biometrics, hydration, sleep, and nutrition together, and adapts to the individual — their history, their sport, their stated goals, and what they've actually done rather than what the average user does. As the dataset grows, rule-based detection gives way to models trained on our own collected data.

RoadmapShipped, in the works, on the horizon
Done So Far
  • Published on the Apple App Store and Google Play
  • Full health dashboard across every logged stream
  • Custom BLE service receiving sensor data
  • Rule-based rep counting from accelerometer data
In The Works
  • Feature parity passes across iOS and Android as the two builds evolve together
  • Cloud sync with multi-device history and trend analysis
  • BioBand and SipSync pairing flows moving from developer builds into the shipped app
On The Horizon
  • ML exercise classification replacing or augmenting the rule-based detector
  • Coach view: roster-level aggregation of athlete profiles
  • Deeper personalization as the dataset grows
In DevelopmentStage 4 of 6 · Custom PCB in design

SipSync

Automatic hydration tracking

SipSync is a smart hydration tracking system: a sensor-equipped water bottle attachment that logs consumption automatically and personalizes daily intake targets based on activity, weather, and body metrics. No manual logging, no guessing. The hardware does the measuring; the algorithm does the thinking.

  1. Concept
  2. Breadboard
  3. Protoboard
  4. Custom PCB
  5. Enclosure
  6. Testing

The working prototype — tap a photo to enlarge.

The gap it closesManual logging gets abandoned

Most people don't drink enough water, and those who try to track intake rely on manual logging apps that are tedious and quickly abandoned. Existing smart bottles are expensive, proprietary, and barely personalized — none factor in real-time activity data, environmental conditions, or integrate into a broader health picture.

SipSync makes the tracking automatic and the target adaptive. And because it lands in the same hub as BioBand, hydration recommendations can respond to actual exercise intensity — something no commercial product offers at this price point.

The prototype, workingWhat's in the photos, and what the app shows
Inside the shell

The Xiao ESP32C3, the HX711 load cell amplifier and the LiPo sit on a soldered protoboard in the printed inner shell. The addressable LED strip wrapped around the outside is the status ring — this is the build that validated the bench.

Assembled

Lid on. The strain gauge platform sits directly under the printed top plate, so a bottle set on top rests on the load cell. Outer shell, inner shell and platform are all PLA off the Fusion 360 model — a two-shell build that keeps the electronics away from water.

Live in the app

Paired over BLE, the load cell's readings become sips and ounces — and roll straight into the day's hydration total. Nothing typed in.

One screen, not the whole app. That screenshot is the Devices tab in MyFitnessTech, where hardware pairs and reports in — it is not the full app. What it captures feeds the day's water total on the Home dashboard automatically, so hydration adds itself up across every sip without any manual logging.

Key featuresAutomatic intake, adaptive targets, smart reminders
  • Automatic intake tracking — no manual logging
  • Adaptive daily targets from activity, weather, and body metrics
  • Cross-device: BioBand workout intensity adjusts hydration recommendations
  • Smart reminders that learn from user habits
  • Trend visualization over weeks and months
  • Water temperature monitoring
How it worksFlow sensor + load cell → a target that adapts

The hardware attaches to or integrates with a water bottle. A flow sensor and load cell (amplified by the HX711) measure consumption in real time. The ESP32 processes those readings and transmits them over BLE to the app.

The hydration algorithm then combines raw intake with body weight, current activity level (optionally pulled from BioBand), local weather, and time of day to compute a dynamic daily target. Rather than a static "drink eight glasses," SipSync adjusts through the day — recommending more after a hard session, in hot weather, or when the user is behind pace. Smart reminders fire based on habit patterns and remaining target rather than a fixed timer.

Smart hydration factors

SipSync doesn't just count ounces — it considers the full picture to personalize your target.

⚖ Activity Level

Pulls workout data from BioBand and MyFitnessTech to raise hydration goals on active days

☁ Weather & Climate

Uses local weather to adjust for temperature and humidity, so you drink more when conditions demand it

⚙ Body Metrics

Accounts for body weight and personal profile to calculate a baseline daily target unique to you

🕐 Time-of-Day Pacing

Distributes intake goals across waking hours and nudges you if you fall behind schedule

Hardware & physical designESP32C3, HX711 load cell, three-part PLA shell
Microcontroller
Seeed Xiao ESP32C3 (RISC-V, WiFi + BLE)
Flow sensor
Flow rate measurement for automatic intake tracking
Weight sensor
HX711 load cell amplifier with custom strain gauge platform
Temperature sensor
Liquid temperature probe on an adaptor board, for water temperature monitoring
Communication
Bluetooth Low Energy to MyFitnessTech
PCB
SipSync V1 in KiCad — in design. Custom footprints for HX711 and Xiao ESP32C3.
Enclosure
3D-printed bottle shell (inner + outer) modeled in Fusion 360, PLA
Power
Rechargeable LiPo battery

Physical design — a three-part assembly designed in Fusion 360 and 3D-printed in PLA

Outer shell
Main bottle housing holding the electronics and defining the external form factor.
Inner shell
Internal structure that positions the sensors and separates electronics from water contact.
Strain gauge platform
Custom mounting platform for the HX711 load cell, enabling accurate weight-based volume measurement.

The two-shell approach allows straightforward assembly, maintenance, and waterproofing of the electronics compartment.

Parts & componentsTemperature probe, load cells, and more ESP32C3 boards3
Sensors & modules
  • Liquid temperature probe with adaptor board×1
Electronics & ICs
  • Load cells (smaller)×1
  • Additional ESP32C3 board×1
Development pathCleared the bench — the custom board is the current front
  1. 1Concept & SensorsFlow sensor and load cell validation, enclosure conceptComplete
  2. 2BreadboardFull breadboard prototype with flow tracking and BLE communicationComplete
  3. 3ProtoboardSoldered build validated on the benchComplete
  4. 4Custom PCBKiCad schematic and layout with custom HX711 and ESP32C3 footprintsIn Design
  5. 5Enclosure & Integration3D-printed shell assembly, hydration algorithm in-app, dashboardNext
  6. 6TestingUser testing, algorithm tuning, accuracy validationPlanned
Research questionsSipSync exists to answer these4
01

How does hydration measured automatically differ from self-reported intake — and by how much?

02

Does automatically measured hydration correlate with training performance and recovery markers?

03

Can a load cell and flow sensor combination achieve volume accuracy sufficient for research use in a consumer form factor?

04

Does adaptive targeting improve adherence compared with a fixed daily goal?

Teams involvedHardware, software, research
Hardware
KiCad PCB design, sensor selection and integration, load cell calibration, 3D enclosure printing.
Software
Hydration module in the app, BLE communication, algorithm development.
Research
Hydration science literature review, algorithm validation, user study design.

Want to contribute to SipSync? Hardware, software, and design contributors welcome — help us make hydration tracking effortless. Join the team →

In DevelopmentStage 2 of 5 · Protoboard build in progress

BioBand

Wearable biometrics & motion

BioBand is a wrist-worn wearable designed and engineered entirely by Fitness Tech members. It combines biometric sensing and motion tracking with exercise-detection software to provide real-time workout analysis and health monitoring — built from the ground up, from circuit design to embedded firmware to the app integration.

  1. Breadboard
  2. Protoboard
  3. Custom PCB
  4. Enclosure
  5. Validation

Simulated data, with reps counted the way BioBand counts them.

Two parts, usable alone or togetherMotion and biometrics, each independent
Motion part

IMUs give us the motion reference points. On its own it tracks movement and counts reps.

Biometric part

A heart rate sensor and a temperature sensor. On its own it works as a biometrics monitor.

Together

Using both unlocks more, like boxing-style movement matching and rep counting.

Because each part works independently, they can be built and tested separately.

The gap it closesCommercial trackers are closed systems

Commercial fitness trackers are closed systems. Users cannot see how their data is processed, cannot customize what is tracked, and cannot contribute to improving the algorithms. For a research organization, that's disqualifying: you cannot answer a new question with a device that only answers the manufacturer's questions. BioBand gives users transparent, customizable tracking — and gives student engineers real experience across the full stack of a wearable: hardware, firmware, mobile, and ML.

Key features6-axis motion, automatic rep counting, BLE
  • Real-time 6-axis motion tracking
  • Automatic rep counting for push-ups, squats, bicep curls, and more
  • Two independent parts: IMU motion sensing, and a heart rate and temperature sensor
  • Both together unlock more, like boxing-style movement matching and rep counting
  • BLE wireless streaming into the MyFitnessTech hub
  • Feeds the full health dashboard alongside nutrition, sleep, and hydration
  • Custom PCB for a compact, genuinely wearable form factor
  • Open firmware and app code for research and educational use
Hardware specsXiao ESP32C3, IMUs, heart rate & temperature sensing
Microcontroller
Seeed Xiao ESP32C3 (RISC-V, WiFi + BLE)
Structure
Two parts: motion (IMUs) and biometric (heart rate + temperature). Each works independently; together they add more.
Motion part
IMUs as the motion reference points — MPU-6050 (3-axis accelerometer + 3-axis gyroscope)
Biometric part
Heart rate and temperature sensors, being added as the second part — blood oxygen (SpO₂) and ECG integration also in progress
Communication
Bluetooth Low Energy via ESP32
Sensor config
8G accelerometer range, 500°/s gyro, 21 Hz filter
Data rate
50 ms intervals (20 Hz) streamed over BLE
I²C pins
SDA: GPIO7 (D5) · SCL: GPIO6 (D4)
PCB
Custom board designed in KiCad — layout stage
Power
Rechargeable LiPo battery, 8+ hour target
How it works20 Hz motion stream → rep-counting state machine

The device continuously reads accelerometer and gyroscope data from the MPU-6050 at 20 Hz. That raw six-axis motion data (ax, ay, az, gx, gy, gz) is formatted as CSV and transmitted over BLE to the companion app.

MyFitnessTech receives the stream through a custom BLE service, parses the sensor values, and feeds them into a real-time exercise detection engine. The current rep-counting algorithm uses a Z-axis state machine: it detects the transition from a "down" position to an "up" position and back, counting each full cycle as one repetition, with thresholds tuned per exercise. The architecture is deliberately built so trained classifiers can replace or augment that rule-based detection once we have enough labelled data.

Development pathWhere BioBand sits in the staged pipeline

Every device we build moves through the same staged pipeline — here's where BioBand sits.

  1. 1BreadboardESP32 + MPU-6050, BLE streaming, basic app connectionComplete
  2. 2ProtoboardSoldered wearable form factor, live app pairing, real-time rep countingIn Progress
  3. 3Custom PCBKiCad layout fabricated and assembled; heart rate sensor integratedNext
  4. 4Enclosure3D-printed housing, strap design, ergonomics testingPlanned
  5. 5ValidationMultiple units, athlete user testing, accuracy benchmarking, research dataPlanned
Research questionsBioBand exists to answer these4
01

How accurately do student-built sensors capture biometrics against commercial and medical-grade references?

02

Can wrist-worn IMU data reliably classify exercise type and count reps across different users and different form quality?

03

What sampling rate and sensor configuration is the minimum viable one for trustworthy rep detection?

04

How much does wearability and comfort affect adherence over a multi-week training block?

Teams involvedHardware, software, research, AI / ML
Hardware
Circuit design, sensor integration, PCB layout, soldering, 3D-printed enclosure. Lead: Jake Woodvine.
Software
Flutter app integration, BLE communication, data visualization, state management.
Research
Testing protocols, data analysis, accuracy benchmarking, documentation.
AI / ML
Exercise classification models, training data pipelines, deployment.

Want to contribute to BioBand? Hardware, firmware, mobile, and ML contributors all have a place on this one. Join the team →

Early ExplorationParts coming together, approach still open

Boxing Glove

Sensor-equipped training glove

Boxing Glove is our newest hardware project: a glove that captures what a punch actually does. We are exploring two ways to do it, motion sensing and RFID, and haven't committed to a primary approach yet. This stage is about finding out which one gives data we would trust.

Brand new, so there is real room to shape it. Hardware, firmware, and software contributors welcome.

Two routes we're exploringGlove motion, RFID contact, or both together
Motion

An accelerometer in the glove counts punches and measures how fast they land. The same kind of motion sensing BioBand uses.

RFID

Tags and a UHF RFID reader work out what the glove makes contact with, such as a bag, pads, or a target.

Both together

Motion says a punch was thrown; RFID says where it landed. Combined, they could show more than either alone.

Whichever route leads, the aim is the same as our other devices: the data lands in the MyFitnessTech hub.

Parts & componentsSensing, electronics, power, and enclosure materials8
Sensors & modules
  • UHF RFID reader×4
  • Tageos EOS-241 RFID paper tag (M830)×25
  • RFID active sensor tag (HID CP15979)×5
  • Accelerometer×4
Electronics & ICs
  • Bluetooth reader / PC port×3
Power & batteries
  • Battery for the glove×2
Enclosure & materials
  • Boxing gloves×1
  • Carbon fiber weave×1
Open questionsWhat the exploration has to settle3
  • Which gives trustworthy punch data on its own: glove motion or RFID contact?
  • Can RFID reads keep up with the speed of a punch?
  • What does combining the two add over either one alone?
RoadmapDone, in the works, on the horizon
Done So Far
  • Parts list drawn up across sensing, electronics, power, and enclosure materials
  • First parts in hand, including the gloves and a UHF RFID reader
In The Works
  • Gathering the remaining sensing, power, and electronics parts
  • Deciding which sensing route leads
On The Horizon
  • Bench-test the motion and RFID routes against each other
  • Build a first working glove around the route that wins
  • Stream its data into MyFitnessTech like our other devices
DiscoveryCoach interviews underway

Coach Dashboard

Roster-level visualization

The Coach Dashboard is the answer to a question our other projects raise: once individual athletes have complete, centralized data, what does the person responsible for twenty of them need to see? It's deliberately the least defined project in the portfolio — and that's the point.

Coach a team at UW? We'd genuinely like to hear what you wish you could see about your athletes. A conversation shapes what we build next.

Why discovery comes firstAsking coaches before designing

We aren't designing it from assumptions about what coaches want. We're asking them first, and the requirements we gather determine both what the dashboard shows and which device we build next.

The gap it closesAthlete monitoring is priced for pros

Athlete monitoring systems exist at the professional level and cost accordingly. A UW club team, an intramural program, or a small gym has no realistic path to roster-level data visibility. Coaches at that level make load, rest, and progression decisions on observation and experience alone — not because they prefer it, but because the alternative is priced for a different tier of program.

Anticipated directionWho needs attention this week, and why

Subject to what discovery returns, the working concept is a roster view surfacing per-athlete workload, effort, hydration, and recovery trend — with attention directed at outliers rather than requiring a coach to read twenty profiles. The same synthesis layer that personalizes an individual athlete's coaching becomes, at roster scale, a way of answering "who needs attention this week and why."

Open design questionsData minimums, privacy, live vs. review4
  • What is the minimum data a coach needs before the view becomes useful rather than noise?
  • How do we handle athlete privacy and consent when a coach can see the roster?
  • Live during practice or reviewed afterward — which actually changes decisions?
  • How much athlete compliance can a system assume before it stops working?
Discovery questionsWhat we're putting to coaches right now6
01

What do you track by hand today, and what would you track if measuring it were free?

02

Which signals tell you an athlete is trending toward injury or burnout — and how early would you need to see them to act?

03

What does readiness mean in your sport, and what would you accept as a measurement of it?

04

How often do you want to look at data: live during practice, daily, or weekly in review?

05

What would make you trust a number enough to change a training plan because of it?

06

What would make you stop using a tool like this in week three?

What the answers determineThe hardware roadmap, the dashboard, the studies
Metrics coaches name as valuable
The hardware roadmap. A device is only worth engineering if it closes a gap a coach has said matters.
Frequency & format preferences
Dashboard design: what is live, what is a daily digest, what is a weekly review artifact.
Trust & threshold criteria
Validation study design — what accuracy makes a measurement actionable rather than merely interesting.
Friction & failure modes
Requirements around setup time, charging, durability, and realistic athlete compliance.
Starter ProjectWhere newer members learn the basics

Project Beacon

A first build, and a live display

Project Beacon is the project we hand to newer members. It's a small display that shows live data from our devices, which makes it a low-pressure way to get up to speed on how the pieces fit together. If it comes together, it also works as a demo screen at tabling events and club fairs.

New to hardware or code? This is the easiest place to start.

What you'd learn on itBluetooth, a live display, and how our devices connect
  • How a Fitness Tech device streams data over Bluetooth LE
  • Turning a live stream into numbers that read well on a screen
  • Basic wiring and mounting for a display
  • How our hardware, firmware, and app pieces fit together
The display ideaLive streams, readable from a few feet away

Our work doesn't fit on a poster: custom firmware, BLE protocols, and load cell calibration don't photograph well. A screen that reacts as someone puts on a device or takes a drink does the explaining a slide can't.

  • Receives live BLE streams from Fitness Tech devices in range
  • Shows motion, heart rate, and hydration readably from a few feet away
  • Portable enough to carry to a tabling event and set up in minutes
  • Picks up another stream each time a new device ships
Every project answers a question about athletes:
what can we measure, and what decision does it change?