Skip to content

ukcs485gSpring23/midterm-brandon-wever

Repository files navigation

Alpine Fitness

Swift Xcode 13.2+ iOS 15.0+ watchOS 8.0+ CareKit 2.1+ ci

Description

An example application of CareKit's OCKSample synchronizing CareKit data to the Cloud via ParseCareKit.

Alpine Fitness is an app designed to aid someone in their workout routine. The goal of this applicaion is to give users an easy to use experience while doing their workout, so they do not have to worry about keeping track of what they have done or what they need to do next. This application is mainly using the CareKit and ResearchKit frameworks.

This application has the goal of allowing its users complete control over how they plan their workout with the ability to create tasks to be completed, access areas of the Health app's information such as height and weight, access the phone's contact information, and give insights into the user's weight and workout progession.

Demo Video

To learn more about this application, watch the video below:

Sample demo video

Designed for the following users

This app is designed for anyone who wishes to start getting into fitness or weight lifting. This app is designed to be a tool in aiding you to plan, keep track of, and complete your workout.

Screen Shot 2023-05-03 at 7 50 32 PM Screen Shot 2023-05-03 at 7 53 57 PM Screen Shot 2023-05-03 at 7 58 42 PM Screen Shot 2023-05-03 at 7 51 13 PM Screen Shot 2023-05-03 at 7 52 39 PM Screen Shot 2023-05-03 at 7 53 12 PM Screen Shot 2023-05-03 at 7 55 09 PM Screen Shot 2023-05-03 at 7 55 59 PM Screen Shot 2023-05-03 at 8 20 04 PM

Developed by:

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

Contributions/Features

On the insights tab, there are 3 surveys that pertain to a user's taks and their related outcomes. Two of these graphs pertain to a user's response on built-in surveys that address a user's weight as well as a user's opinion of the difficulty of a workout they have completed. The third graph is a representation of the amount of exercises that the user has completed on a given day. OCKHealthKitTasks are also built into the application's funcitonality and pull data from the Health app on a user's phone to display current weight and height information. I have also created two new custom button types, the first of which is intended to let the user keep track of a weight they may have completed while doing a certain exercise. The second custom button type is a text input feature designed to be a sort of notepad for users to write out their thoughts, plans, or motivations while completing a workout. There is also added functionality to the profile tab, with the user having the ability to add their own custom OCKTasks and OCKHealthKitTasks, as well as being able to update their own profile and contact information.

Final Checklist

  • 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

Wishlist features

  1. Connecting multiple OCKCarePlans to different workout types and setting them to specific schedules. For example, this would have chest day on monday, legs on Tuesday, etc.
  2. Allowing multiple users to contact eachother through the contacts tab and allowing them to share information with eachother such as workouts, and personal data to track eachother's progess. This would be a major step toward tailoring this application to a more social-media style.
  3. Allowing users to create custom care plans, similar to the point 1. This could allow users the oppurtunity to create their own workouts with customized schedules, giving users more choice over what their workout schedule may look like.
  4. Tapping a third-party API that gave users the ability to create a specific exercise task - say bicep curls - and the API would provide a short video demonstration on how to correctly perform the exercise.

Challenges faced while developing

The biggest problem I faced during development, was allocating time to come to campus and use the university computers, as I do not personally own a Mac. Another large challenge I faced during development was navigating documentation related to problems I was experiencing. Often I would run into issues and searched possible fixes but often times Apple's documentation links were bad and there was a not of information pertaining to the situation I was in. Finally, the last problem I faced was working with a dynamic, multi-threaded application which I have not had a lot of experience working with in the past. This made me have to think very critically about problems before they arose, otherwise errors could persist on multiple builds and the only way to fix this issue was by cleaning my build folder and restarting XCode.

Setup Your Parse Server

Heroku

The easiest way to setup your server is using the one-button-click deplyment method for parse-hipaa.

View your data in Parse Dashboard

Heroku

The easiest way to setup your dashboard is using the one-button-click deplyment method for parse-hipaa-dashboard.

About

midterm-brandon-wever created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages