/CovidTracker

Here is the Software developed for Team 2152.902 for TSA Software Development Event

Primary LanguageSwift

CovidTracker

Here is the Software Developed by Team 2152.902 for TSA Software Development Event On a general hierarchy, this app will allow people to stay safe and be notified of a “covid-19 threat” in the area they are in. It can inform them about places that are at high risk and low risk. This can educate the public on where it is and is not safe to travel. It can also give recommendations on “possible quarantine” periods based on contact with infected personnel depending upon the area and usage of the application.

[Education/Social Value]: Currently, we hope to have luck on our side so that we do not contract covid 19 when travelling. This app eliminates luck from the equation and provides the user with ease of mind as they now know what they are putting themselves into when commuting. As Nelson Mandela once said, “Education is the most powerful weapon which you can use to change the world.” You cannot help mitigate covid 19 or be safe without being educated and thus the news page is vital to the purpose of the app .

[Easy access]: At the bottom, there are 4 tabs that allow for easy navigation. By simply clicking on a tab the user is directed to the appropriate page. Also, we have navigation links and a slide feature so users can navigate within that tab. [Demo]

[App Logo]: The app’s logo has a shade of red with a design so it looks aesthetically pleasing. The design also has meaning because the overlapping squares represent the measures taken by us to help stop the spread and help society.

[Home Page]: When opening the app, it will prompt you to our home page which has 2 designed buttons. One is to scan a QR and another is to make a QR. For example, if they are at a Walmart and want to check the covid status there, they simply take out their phone, scan the QR generated from our app, and then see all the data which makes possible conclusions about risk assessments and more. Our QR in our app is different from others. This is done so through customizing the QR scanner from our code. It recognizes QR’s and we have a label on the screen that shows the location of the QR in order to ensure accuracy and conformity for the user. Another option is to make a QR. If a user wants to create a QR to a place that does not already have one, they simply click on the “Make QR Button” and then, they enter the location of the current place which in result, generates a random QR that can store data.

[News page]: For our news page, news is pulled from the back-end database where admins can add featured news relating to covid-19. Admins are made through security rules in Firebase. This information will be directly pulled from credible government agencies. This will be updated on a regular basis. This has social value because it reminds all the people about the coronavirus and people have access to the latest updates right from their phones.

[Questionnaire]: Our questionnaire is designed for people who are Feeling Sick and can be accessible through the button on the updates tab. It asks a few questions regarding your current health status and Covid 19 history. These questions are answerable through a custom made checklist. Based on the status of the circle our code differentiates yes and no and then our algorithm comes with conclusions and notifies other users if applicable under the notifications section. This algorithm is like a scoring system and each question has a different value. Based on the selections of the user, you get categorized in one category and those personalized alerts and conclusions come. This happens when other people are in the same location of sick users at estimated times and the times are done through a rounded feature.

[Location Details]: In the Location Details Page, there are statistics for the location the user is in right now. This shows how many people visited that day, number of infections of people this week, and risk assessment so it can educate the user about that place.

[Settings Page]: In order to comply with proper privacy rules, in settings on iPhone, the user will find access to whether they want the app to access their camera and location. Based on the user’s input the QR feature will be used or omitted. They will also find Permissions & Contracts our app has with a Terms & Conditions to ensure their privacy & safety with possibly sensitive information.

[Database]: Our app uses Firebase to call queries and have security rules to distinguish between people/Admin and for customized APIs. We created our entire database architecture first with all variable storage places and image storage. We used anonymous authentication, real time updates, and store features of Firebase as talked before. We integrated SwiftUI with Firebase through pod files and this allowed all the actions taken on the app to be stored in the database respectively based on our architecture.

[Real Time Updating]: Since we chose firebase, we had access to real-time updates. Through coding a listener that connects with Observable Objects, we were able to update statuses and news pages without needing the user to refresh. If a user tests positive and you were near that person, the updates tab automatically shows notification and updates risk assessment/status. [Show demo on phone]

[Risk Assessment+Chain Length]: Based on the number of reports in a certain location and the questionnaire if they are feeling sick, we make an educated prediction about their status with the Covid-19 infection through an algorithm with points and percentage systems. We also have 3 zones, red, yellow, and green for the assessment of the infection within a certain location and we developed an algorithm that calculates which zone the user is in. They should always get a Covid test to ensure the accuracy of the algorithm we developed but this allows for them to make educated actions going forward based on their status and surrounding risk assessment. Each zone comes with different alerts. Examples include after the questionnaire or location statistics. Our algorithm uses possible contact instances and the chain length to determine the risk of the user. This allows us to warn users that are indirectly in contact with an infected user. The scenario can be visualised in the form of a computer science graph. Our warning system uses a breadth-first traversal to make sure that users are warned of the smallest chain through the graph to get the most accurate results.

[Storing Time Period]: In our updates page, we have a button where you can exit the location and this sends the data to the database for further use and more accurate conclusions. For enter, this happens after you scan QR, see stats, and click the “enter” button. It calculates the time you were there and sends it to the database.

[Notifications for Entering + Exiting]: Our app records user interaction in app locations to track and break Covid-19 transmission chains. Users have the ease to scan a QR code to bring up our data and risk assessments for that specific location. This gives the user the knowledge to choose to enter that location. If they enter, a new entry is made into our database. Once they leave the location, the users can easily end their visit in the updates tab with the click of a button. In the case that users may forget, they will be asked to end their visit when trying to enter another location. Our database stores all user locations visited and end location requests so we can provide our user with more accurate results. In the case that a user is evaluated to be positive, the user receives realtime updates if they were in-contact with the infected user within the past 14 days. This allows for us to warn other users to quarantine themselves in order to break transmission chains. If the user is already positive in our app and enters a place, everyone else in that place on the rounded time will be notified immediately with a warning. These notifications of being within positive user will be there for 14 days. The realtime updates come within the notifications section in the updates tab where the user can constantly check.

[Status Updates]: If a user is deemed positive within our app, the status will change to negative within 14 days.

[Time Picker]: What if you forget to exit a location and it's been a while since you were there. Our app has a solution to that. Click on the exit button and then, an alert will show asking if you just left and if you hit no, a time picker page will load where you choose the estimated time of when you left and if it was a day, you can pick a previous date too. After you hit the submit button, the rounded time is stored in the database and if applicable, it will warn other users through notifications at the time entered. Also, before entering a new location through the enter button, it will give a popup alert to exit the previous location and then, it will take you to the time picker page to choose the approximate time of when you left. We have constraints within the date/time picker by disabling all dates before the date you entered the place. Also, if the time selected for exit was before you entered, it will choose the current time still.

[How to Create QR]: What if you were in a place that does not have a QR code to scan by our app. Our app has a solution to that too. You can easily make a QR. Click on the Make QR button in Tracer page, enter name of place and address, and then it will generate a QR that will hold all data for each user and the place itself per usage. You can use this generated QR by simply clicking on the copy QR button and then, you can use it in whatever way is best and efficient for you.

[Double check]: Our app has a double check feature which checks that the QR is existent in our database and if not, it will not scan the QR while continuing to say “Scan For QR”. There is also a flash capability button at the bottom that seamlessly switches on and off with a touch if needed when it is dark and the phone camera itself cannot scan it.

[Alerts]: Our app has many alerts in order to guide the user. For example, if a user is positive and enters the store, we give an alert and there are many other use cases too. Alerts are used when trying to enter without exiting the previous location, risk assessments customized notifications, questionnaire alerts dependent upon answers, and double checking for entering before exiting location, etc. They come with content, title, an ‘ok’ button or a ‘yes’ or ‘no’ with different logic.

[Confidentiality]: In our app, all our users will be anonymous through 10 digit anonymous IDs and each has customized APIs for their usage and surroundings.

[How a user is defined]: Since we don’t have sign in functionality, a new user is created and defined within our database architecture when a new phone is used. Basically, the user’s device differentiates multiple users.

[Light & Dark Mode]: The app is also adjustable to light and dark mode options, which can be changed by the user.

[Design Process]: First, in order for our entire group to understand the concept, we designed a Figma (mockups tool) which allows everyone to see the wireframing of the app. Then, we set up the firebase and connected it with our project while adding security rules and completed the architecture of the backend. Then, we created all the methods necessary so the UI can display the backend stuff (getAllNews, Customized APIs). After, we worked on it page by page while formatting the UI too.