The goal with this Fitness Tracker side project is to connect stuck-at-home fitness fans as they work out starting with friends/family.
A secondary goal was for me to gain developer experience with the FitBit SDK and AWS Amplify using AppSync and writing GraphQL.
This is still a work in progress as far as reaching the goal for connecting users.
As for the developer goal, I would not recommend using AWS Amplify for a large scale project. It tries to do too much and when you reach for features they are either buggy or you have to resort to writing raw CloudFormation which defeats the purpose of using a CLI.
That being said, when getting up and running quickly with AWS AppSync + DynamoDB it saves a ton of time. Combining this with
create-react-app and the
aws-amplify component module made starting this project off a piece of cake.
The FitBit SDK has been really easy to use and getting setup with the FitBit OS Simulator was fun. Limitations like not being able to install node modules or make HTTP requests directly from the watch app have been fun little hurdles.
So far I am using the AWS Amplify “framework” to handle building out a GraphQL schema that generates CloudFormation templates.
The frontend is simply React bootstrapped with
Hosting is also made easy with the Amplify CLI publishing the code to an S3 bucket with a CloudFront CDN.
Authentication is also baked into Amplify so that in just a few commands we can deploy Auth using AWS Cognito and combine that with auth components from
Unfortunately the watch itself cannot make HTTP requests and needs to instead communicate over a websocket-like API to send data to the companion running in the background on a phone.