RespectableThieves / hypecycle

An open-source, React Native-based cycling computer! Track your ride metrics like speed, power, heart rate, and altitude in real time. Manage sensors easily, map your journeys, and look forward to amazing features like live shared data and tracking within your social ride groups. #ReactNative #OpenSource #CyclingTech 🚴‍♂️📲🌐
5 stars 2 forks source link
bluetooth cycling react-native typescript

HypeCycle Mobile

An opensource react native based Cycling computer

MVP:

TODO:

To Try:

Data Structure

Real Time Data Table

id: alphaNumeric (primary)
distance: number,
elapsed_time: number,
speed: number,
latitude: number,
longitude: number,
altitude: number,
heading: number,
heart_rate: number,
instant_power: number,
three_sec_power: number,
ten_sec_power: number,
cadence: number,
is_bluetooth: boolean,
is_wifi: boolean,
is_power: boolean,
is_heart_rate: boolean,
is_cadence

rides table

A ride should be:

*id: alphaNumeric (primary)
*start_at: timestamp / or just use created_at
end_at: timestamp
*is_active: boolean

settings table

A settings table to persist settings and config

*id: alphaNumeric (primary)
screen_brightness: number
is_auto_uploading: bool

Data Logging Tables

table: sensors

A sensor should be:

*id: string (primary) 
name: string
type: string
is_primary: boolean
sensorType: string[]
created_at: number
battery_level: number
table: location_measurements

A locationMeasurement should be:

*id: alphanumeric (primary)
accuracy: number
altitude: number
altitude_accuracy: number
heading: number
latitude: number
longitude: number
speed: number
ride_id: string (foreignKey)
table: heart_rate_measurements
*id: alphanumeric (primary)
beats_per_minute: number
ride_id: string (foreignKey)
table: power_measurements
*id: alphanumeric (primary)
instant_power: number
ride_id: string (foreignKey)
table: cadence_measurements
*id: alphanumeric (primary)
cadence: number
ride_id: string (foreignKey)

Future Features:

V1:

V2: