← Back to Android Apps
In Development
SmartRower
com.smartrower
A real-time companion app for the SmartRower rowing module. It plots live stroke telemetry — rate, distance, and power — as you row, captures a force-per-stroke curve from the drive transducers, and saves every session to a browsable history.
Features
- Live Metrics — Actively updating plots for stroke rate, total distance rowed, and average stroke power on a rolling 30-second window
- Force per Stroke — Real-time force transducer curve split into DRIVE and RECOVERY phases, with recent strokes ghosted behind the current one
- Session Tracking — Elapsed time, stroke count, and peak power while rowing; stopping a session saves it automatically
- Activity History — Cards for past sessions with duration, distance, stroke count, average power, and stroke rate
- Settings — Clear user data, Terms of Service, and Privacy Policy
- Hardware-Ready Architecture — Transport-agnostic data source layer: a built-in stroke simulator today, with the Garmin Bluetooth rower profile and ANT+ rowing support designed in
Screenshots
Tech Stack
- Kotlin + Jetpack Compose (Material 3, dark theme)
- Custom Compose Canvas plots — time-series charts and the per-stroke force curve, no chart library
- Room — activity persistence
- Hilt — dependency injection
- Data source abstraction — Dummy (simulated) / Garmin Bluetooth / ANT+ transports
Status
In development (v0.1.0). Live data currently streams from the built-in stroke simulator; the Garmin Bluetooth rower profile and ANT+ hardware transports are next, with the UI, session tracking, and history already transport-agnostic.