Giter Site home page Giter Site logo

final-project-client-seunadekunle's Introduction

Track

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. This app allows user to maintain habits and to track them the goal is to provide a centralized locations for users to stick to habits, this app also provides a trackScore that measures how devoted you are to making your life better.

Demo Video

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

Video Link

Video(Uncropped) Link

Designed for the following users

Anyone who is seeking self-improvement or just want a centralized tracking application. Track is designed for a wide variety of users and can accomodate most use cases.

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

  • Custom FeaturedContentView so users can learn more about motivation

  • Custom Survey that involves a motivational video that can be played

  • Ability to add Care Plans

  • See added Care Plans

  • Custom form so users can add their own task with the ability to select different schedules, plot type, assets, Card views, and Care Plans

  • Insights tab was added were plots could be shown with random colorful gradients

  • Trackscore is updated as user performs actions in the app and syncs with parse

  • Clean and minimalist UI that reflects the chosen color theme

  • Two custom cards, (LoggerCard and CounterCard) can be employed to track Quantitative and Qualitative data

  • Customized data shown for the different surveys employed in the app

  • Direct Link to the App Store

  • National Hotlines added as default contacts for Users to get encouragement/help

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

  • LoggerCardView (Custom)

  • CounterCardView (Custom)

  • 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. Add a rudimentary social network feature where users can follow each other - Users can follow other users, users can get badges and customizable content.

  2. Add UI changes for a dark theme and Implement a more flexible CareView - Developing a Care feed that would allow for grouping by care plans within a certain and integrate calculated data such as a TrackScore and user info (followers).

  3. Calculate trackScore using a more complex algorithm which will take into account streaks, time of completion, and other factors.

Challenges faced while developing

One challenge was in implementing the trackScore feature was to find a way to trigger it, upload the changed value to the Parse Server. The main agent for doing this was the CareViewModel which was created and then passed through. To solve a warning involving background threads and the @Publisher variable changing the trackScore variable had to be done on the main thread since it was published this was done using DispatchQueue.main.async instead of other options that failed such receive(on:) and onReceive only. One unexpected obstacle was dealing with Swiftlint having to refactor code and change how some parts of the code was structured in order to resolve swiftlint build errors. Simply adding the file names to .swiftlint.yml or adding the disable all command wasn't the optimal solution. Another issue was dealing with closures within forms there were multiple errors that occurred when attempting to use Pickers within forms, this error involved trailing closures and was solved by using the right Function to instantiate a Picker within variable scope and using the right type.

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.

final-project-client-seunadekunle's People

Contributors

seunadekunle avatar github-classroom[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.