CrFit is an all in one fitness/health tracker, journal, and profile. CrFit allows a user to keep an updated fitness profile. On this fitness profile, the user can track different statistics about their health and fitness. Features include tracking user goals, recording dietary information, workout checklists, and more. CrFit separates itself from competitors by truly being a one stop shop for all fitness need.
CrFit utilizes the CareKit and Research Kit frameworks. All views are UIKit and SwiftUI. The backend is a parse server hosted on heroku.
To learn more about this application, watch the video below:
This app is made for anyone interested in recording their fitness journey. From tracking your meals, calories, energy burned, steps, workouts, etc. You can have a profile that keeps track of your entire journey for days to weeks to months to years.
Developed by:
- Maximus Liggett -
UNIVERSITY_OF_KENTUCKY
,COMPUTER_SCIENCE
- Corey Baker
ParseCareKit synchronizes the following entities to Parse tables/classes using Parse-Swift:
- OCKTask <-> Task
- OCKHealthKitTask <-> HealthKitTask
- OCKOutcome <-> Outcome
- OCKRevisionRecord.KnowledgeVector <-> Clock
- OCKPatient <-> Patient
- OCKCarePlan <-> CarePlan
- OCKContact <-> Contact
Use at your own risk. There is no promise that this is HIPAA compliant and we are not responsible for any mishandling of your data
User Adding Tasks
When in the app, the user navigates to the profile view. In this view, they click on “Add Workout Goal.” Here they are able to customize their task by schedule, instructions, title, and card view. Once the add task button is pressed, the task will appear in the CareKitView.
OCKTasks/HealthKitTasks/OCKCarePlans
There are many different task cards that appear in the care view. All of these OCKTasks are there to collect information about the user and customize their profile/experience. OCKHealthKitTasks are there to help the user record information that their phone collects and match it to their current goals. Tasks are added to one of two different care plans based on the type of input.
Custom Cards
I created custom cards for the purposes of my app. This includes calories consumed which gives a thumbs up or thumbs down based on how close you are to your goal. The other one is quote of the day which saves a motivational quote of the day to the user's care view.
Surveys
There are two surveys in the app. One acts as an end of day check in, in which the user submits their total workout time for the day as well as their goal workout time. In the other survey, the user puts in their current weight, their goal weight, and the amount of weeks until they wish to meet their goal. The survey will calculate the average lbs/week the user must lose/gain.
Insights
I created many different scatter, line, and bar charts for the app. These charts are based on data collected form surveys, OCKTasks, and OCKHealthKitTasks.
- Signup/Login screen tailored to app
- Signup/Login with email address
- Custom app logo
- Custom styling
- Add at least 5 new OCKTask/OCKHealthKitTasks to your app
- Have a minimum of 7 OCKTask/OCKHealthKitTasks in your app
- 3/7 of OCKTasks should have different OCKSchedules than what's in the original app
- Use at least 5/7 card below in your app
- InstructionsTaskView - typically used with a OCKTask
- SimpleTaskView - typically used with a OCKTask
- Checklist - typically used with a OCKTask
- Button Log - typically used with a OCKTask
- GridTaskView - typically used with a OCKTask
- NumericProgressTaskView (SwiftUI) - typically used with a OCKHealthKitTask
- LabeledValueTaskView (SwiftUI) - typically used with a OCKHealthKitTask
- Add the LinkView (SwiftUI) card to your app
- Replace the current TipView with a class with CustomFeaturedContentView that subclasses OCKFeaturedContentView. This card should have an initializer which takes any link
- Tailor the ResearchKit Onboarding to reflect your application
- Add tailored check-in ResearchKit survey to your app
- Add a new tab called "Insights" to MainTabView
- Replace current ContactView with Searchable contact view
- Change the ProfileView to use a Form view
- Add at least two OCKCarePlan's and tie them to their respective OCKTask's and OCContact's
- The original goal of this app was to eventually give it a social media aspect. The Care View would act as a timeline of a user profile. In the future, I would expand on this idea and allow users to see each other's profiles when they give permission.
- I would make major updates to the contacts as well in the future. I would piggy back on this idea and allow users to also make "friends" through the contacts tab which would be the permissions for users to view each others' profiles.
- The last feature I would add is more customizability for the user. I would add many more tasks that focus on all possible fitness needs. This could include tutorials, reccomending workouts, reccomending food, etc.
The first challenge I had developing the app was learning the codebase. This is my first time working with Swift and while I did find it easy to learn, there was still time to be accustomed to it. This was also one of the larger codebases I have worked with so it took a lot of time to learn how it was all the different parts of the app were interracting with eachother. Another challenge was learning how to use Care Kit. I found Care Kit to be an extremely powerful tool that had many different abilities. The only problem was there is very limited information about CareKit that I could find other than the README. This meant a lot of testing to figure how things in the framework flowed together.
The easiest way to setup your server is using the one-button-click deplyment method for parse-hipaa.
The easiest way to setup your dashboard is using the one-button-click deplyment method for parse-hipaa-dashboard.