Log worouts, Review hisoryt of workouts, be able to access from diffent device, and from my device in ofline mode
reliablity that data will ot get lost and scaliblty are main non func req
From frontent side its makes sense for application to comunicate with server using websodet or rest api, rest actually should be enough as the reauest are pretty siple even if its new devce full histiry can be requested in aprts as part of api
From application there should be load balancin leven to preovide suitale host to request data. Data itself thould me stored separatly within databe and with replicatio to ensude data will not be lost. Database sharding client id can be suitable key as most of data aresprated betwen difenrent users and do not intersect.
Forst uploadig of data should be handed in a way that it firstly soted stored locally but being synced with server periodicallly both to avoid loss of data in case conection diaper and in case client divice goes out of charge. Data can be deduplicated based on time and on duration of the workout, this will help to avoid false posives in case of short workouts and as well in case some mimatch of time it esier to distiguish been diffenrt workouts. In case client want to request the dat rom the server it ccan be downe in batches providing newst workouts first as the client mayh ave bit log of data to rqeust