ViruSafe aims to help the fight with COVID-19 by offering people to share their symptoms as well track the spread of COVID-19 with an interactive map

Overview

ViruSafe for iOS

ViruSafe aims to help the fight with COVID-19 by offering people to share their symptoms as well track the spread of COVID-19 with an interactive map, that shows how the infection has spread throughout Bulgaria.

The ViruSafe mobile app provides access to the following:

  • Receiving up-to-date information regarding COVID-19
  • Regular sharing of symptoms
  • Sharing your location, in order to compare your location to all users who have developed symptoms
  • Option to be warned if you have been in close proximity to other symptomatic users
  • Option to receive location-based notifications and alerts

Download on the App Store

Overview:

Build Instructions

Prerequisites

  • Mac computer
  • Xcode
  • Developer account
  • iTunes Connect account (Optional)
  • Clone the repository

Bundler

We use Bundler to help us with the installation of gems that we use in the project (Fastlane and Cocoapods).

If you don't have bundler installed

gem install bundler

Install all gems from specified sources

  • Navigate to the folder containing the Gemfile in your Terminal app
  • Now install all gems by executing the command:
bundle install

Install gems without using bundle

  • Navigate to the folder containing the Gemfile in your Terminal app
  • Install the necessary gems

As we use cocoapods for dependencies you need to have at least cocoapods installed on your computer. If not:

gem install cocoapods

optionally:

gem install fastlane

Pods

  • Navigate to the folder containing the Podfile in your Terminal app.
  • Now install the necessary project dependencies by executing the command:
bundle exec pod install

or without using bundle

pod install
  • Open COVID-19.xcworkspace and build.

NB! NetworkKit is a Development Pod. After every change in it you have to reinstall pods and clean build your project.

SwiftLint

This project is using SwiftLint, it's installed throught cocoapods so that you don't need to install it on your computer.

Fastlane

This project is using Fastlane as middleware for GitHub Actions (or any other automation tool).

Firebase

In order to have working app you should add GoogleService-Info.plist to the project. If you're member of the internal team get a copy of GoogleService-Info.plist from one of the other developers. Otherwise you have to setup your own Firebase project. You should have one configuration per target. GoogleService-Info.plist files are located in ./COVID-19/Firebase/ .

Repeat above for the remote config. Check RemoteConfigDefaults for used keys.

NB! We're using Firebase for Push notifications, Remote config and Crashlytics. Also, by default, Firbase collects some Analytics like installing and reinstalling of the app.

Flex

If you're member of the internal team get a copy of Localization-settings.plist files from one of the other developers and place it ./COVID-19/Firebase/

If you don't have Flex API key this build step will fail, but you're covered. We ship our code with default localization for every target, so you're still able to run the project.

Build Settings

Base SDK: Latest Deployment Target: 10.0

NB! You can build an application with latest Base SDK that runs under iOS 10. But then you have to take care to not use any function or method that is not available on iOS 10. If you do, your application will crash on iOS 10 as soon as this function is used.

Provisioning

Debug version is signed automatically. Release version uses manual signing. Both however are not opened, so if you're not member of the internal team you have to use your own signing, while testing.

Debug

  • Bluetooth functionality can not be tested in the Simulator. (Don't worry BT is not added yet)
  • Location can be simulated (Google it)

Code Styleguide

We decided to refer to The Official raywenderlich.com Swift Style Guide

Contributors are expected to read through and familiarize themselves with the style guide as we're going to enforce it with swiftlint.

Branching guide

Contributors must work directly with their private forks on GitHub. It is expected that all contributions will be submitted via a feature branch originating from the appropriate up-to-date develop branch. Please check our branching strategy

Using the REST API

Swagger Documentation for the ViruSafe REST API is available at the ViruSafe SwaggerHub.

Also, the ViruSafe Swagger API Docs are available for download as JSON and as YAML files. These become useful when setting up your Mock API.

Using a Mock API

To develop the mobile app against a Mock API, please check the guidelines on how to Use a Mock API

Contributing

Read our Contributing Guide to learn about reporting issues, contributing code, and more ways to contribute.

Security

If you happen to find a security vulnerability, we would appreciate you letting us know by contacting us on - virusafe.support (at) scalefocus.com and allowing us to respond before disclosing the issue publicly.

Contacts

Feel free to checkout our Slack Team and join the discussion there ✌️

License

Copyright 2020 SCALE FOCUS AD

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Comments
  • Implement SwiftLint

    Implement SwiftLint

    Is your feature request related to a problem? Please describe. Currently there is no active enforce code style tool enabled for this project. This makes it hard to review PRs as it requires manual validation of the code quality.

    Describe the solution you'd like Implement a SwiftLint.

    Describe alternatives you've considered N/A

    Additional context N/A

    opened by ASPetrov 1
  • User's consents to

    User's consents to "the processing of their personal data"

    The functionality enables the user to grant or revoke the right to the processing of their personal data.

    If the user Grants the right to the processing of their personal data:

    • They will start receiving notifications
    • They will have to provide their personal data
    • They will be able to fill in their symptoms
    • GPS tracking on their phone will be enabled (this function can be disabled from their operating system

    If the user Revokes the right to the processing of their personal data:

    • They will stop receiving notifications
    • Their personal data will be deleted
    • They will not be able to fill in their symptoms
    • GPS tracking on their phone will be disabled
    enhancement 
    opened by s-yanev 0
  • Fix force update check/navigation

    Fix force update check/navigation

    Fixes #

    To test:

    PR submission checklist:

    • [x] I have followed the Contributing Guidelines
    • [x] I have considered adding unit tests where possible.
    • [x] I have considered if this change warrants user-facing release notes and have described them above.
    opened by ASPetrov 0
  • Add pinned certificate

    Add pinned certificate

    Fixes #

    To test:

    PR submission checklist:

    • [x] I have followed the Contributing Guidelines
    • [x] I have considered adding unit tests where possible.
    • [x] I have considered if this change warrants user-facing release notes and have described them above.
    enhancement 
    opened by ASPetrov 0
  • Add Permissions Scope document

    Add Permissions Scope document

    Fixes #

    To test:

    PR submission checklist:

    • [x] I have followed the Contributing Guidelines
    • [x] I have considered adding unit tests where possible.
    • [x] I have considered if this change warrants user-facing release notes and have described them above.
    documentation 
    opened by ASPetrov 0
  • Release/1.0.4

    Release/1.0.4

    Fixes #

    To test:

    PR submission checklist:

    • [x] I have followed the Contributing Guidelines
    • [x] I have considered adding unit tests where possible.
    • [x] I have considered if this change warrants user-facing release notes and have described them above.
    opened by ASPetrov 0
  • Release/1.0.4

    Release/1.0.4

    Fixes #

    To test:

    PR submission checklist:

    • [x] I have followed the Contributing Guidelines
    • [x] I have considered adding unit tests where possible.
    • [x] I have considered if this change warrants user-facing release notes and have described them above.
    opened by ASPetrov 0
  • Dependabot couldn't find a <anything>.yml for this project

    Dependabot couldn't find a .yml for this project

    Dependabot couldn't find a .yml for this project.

    Dependabot requires a .yml to evaluate your project's current Github_actions dependencies. It had expected to find one at the path: /.github/workflows/<anything>.yml.

    If this isn't a Github_actions project, or if it is a library, you may wish to disable updates for it from within Dependabot.

    View the update logs.

    opened by dependabot-preview[bot] 0
  • Setup CI file

    Setup CI file

    Changes:

    • Added CI.yml
    • Added PR template
    • Minor docs updates

    Todo:

    • [x] Add the Fastlane scripts to the project
    • [x] Update the CI pipe to include lint, build, test, metrics and deploy steps
    • [x] ~Add caching for Pods.~

    Notes:

    • Fixes #1, fixes #11
    enhancement help wanted 
    opened by senart 0
  • Mock API docs missing in repo

    Mock API docs missing in repo

    Describe the bug The Mock API docs has been removed from the develop branch

    To Reproduce Steps to reproduce the behavior:

    1. Go to branch develop
    2. Click on the link Using-Mock-API
    3. See error

    Expected behavior The Using-Mock-API link works just like on the master branch.

    Screenshots N/A

    Smartphone (please complete the following information): N/A

    Additional context N/A

    bug documentation good first issue 
    opened by senart 0
  • Add Permission Scope file

    Add Permission Scope file

    Is your feature request related to a problem? Please describe. Not related to a problem, but I think it will help if we add a Permission Scope for the mobile app permissions that we request (location, etc.), similar to how the GitHub-Slack integration shows it.

    Describe the solution you'd like Create a new Wiki entry, called Permission Scope and describe why we are using the permissions we request. Follow the the table example shown here.

    Describe alternatives you've considered For now, adding it to the README.md or to a Permission-Scope.md file instead of a Wiki section works as well.

    Additional context N/A

    documentation good first issue 
    opened by senart 0
Owner
scalefocus
ScaleFocus is an European IT solutions delivery center. We craft technology excellence, R&D and innovation in the domains of Digital, Cloud and Data.
scalefocus
App which lets two people share their social media details by simply putting one phone on top of the other ("tapping"). Currently in development by Nikita Mounier.

Tap It Tap It enables two people to seamlessly share their social media information (e.g. Instagram, Snapchat, phone number) by simply placing one scr

Nikita Mounier 24 Oct 21, 2022
A todo list iOS app developed with swift5 and coredata to persist data, this app help people organise their tasks on categories.

A todo list iOS app developed with swift5 and coredata to persist data, this app help people organise their tasks on categories. The app is simple, intuitive, and easy to use and update tasks informations.

null 1 Oct 10, 2022
Stocks-App - App that allows the user to track stocks of their choice

Stocks-App App that allows the user to track stocks of their choice (Coming soon

Eli Hartnett 0 Jul 9, 2022
Track your activities with the help of the TrackMyDay app

TrackMyDay Description: Track your activities with the help of the TrackMyDay app. This app is very easy to use and understand so you can get started

Evgeny Karkan 32 Oct 27, 2022
👶🏻 An iOS app to help you track sleep, feedings and diaper change for your baby

?? Maby Maby is an iOS/watchOS open-source app to help you keep track of your baby's sleep, feedings, diaper changes and more to avoid the constant qu

Fran González 2 Aug 25, 2022
A simple App to Track the status of Covid-19 around the World. Using SwiftUI and GraphQL

CovidUI CovidUI is a simple App to Track the status of Covid-19 around the World. This is a simple App I made to track the spread of Covid-19 for me a

Mathias Quintero 77 Dec 14, 2022
ToDoList - An ios app that help users to set their todos and make it easy to remember this todos

An ios app that help users to set their todos and make it easy to remember this todos by reminders them when todo time's up, this app make sure that you don't forget any todos that you want to do just give it to the app and let the app hundle it for you.

Ahmed Mahrous 1 Apr 25, 2022
COVID Certificate is the official app for storing and presenting COVID certificates issued in Switzerland.

COVID Certificate is the official app for storing and presenting COVID certificates issued in Switzerland. The certificates are kept and checked locally on the user's phone.

Swiss Admin 111 Dec 19, 2022
COVID Safe Paths (based on Private Kit) is an open and privacy preserving system to use personal information to battle COVID

COVID Safe Paths is a mobile app for digital contract tracing (DCT) sponsored by Path Check a nonprofit and developed by a growing global community of engineers, designers, and contributors. Safe Paths is based on research originally conducted at the MIT Media Lab.

PathCheck Foundation 470 Nov 6, 2022
A simple todo app which aims to demonstrate some new concepts from SwiftUI 3

TodoAppSwiftUI3 A simple todo app which aims to demonstrate some new concepts from SwiftUI 3 Description This is a simple todo app built to demonstrat

Roman Luzgin 50 Nov 1, 2022
WeHobby is an IOS application which aims to facilitate the discovery of new hobbies while creating links between users.

???? WeHobby (EN) WeHobby is an IOS application which aims to facilitate the discovery of new hobbies while creating links between users. The issues t

Thomas 2 Dec 8, 2022
A Simple Weather App Using the Open Weather Map api

The Weather, a Simple Weather App Using the Open Weather Map api. This app demos use of the Open Weather Map api. The UI is simple, with views of the

null 1 Feb 17, 2022
A simple clean application to provide you with weather forecast data as well as currency rates, all with beautiful melodies and sounds

A simple clean application to provide you with weather forecast data as well as currency rates, all with beautiful melodies and sounds.

Sergey 1 Jan 21, 2022
MapApp - You can save the location of the places you go on the map and add names and notes

MapApp - You can save the location of the places you go on the map and add names and notes

Yağız Savran 3 Feb 1, 2022
An unofficial logbook for bouldering at Mandala. Kind of a SwiftUI playground as well.

BoulderLogbook An unofficial boulder logbook for Dresden's boulder gym Mandala. Features When finished it should allow you to: log all your tops for a

Martin List 7 Dec 27, 2022
Timetinerary is an iOS app that allows you to create, save, and share continuous schedules.

Timetinerary is an iOS app that allows you to create, save, and share continuous schedules. These schedules can be converted into a widget and notifications.

Ben Koppe 1 Feb 14, 2022
An application on the iPad for people who cook. It comes with features such as smart recipes, recipe management and ingredient inventory tracking.

ChopChop ChopChop is an application on the iPad for people who cook. It comes with features such as smart recipes, recipe management and ingredient in

Seow Alex 0 Dec 23, 2021
Simple App for European people who need to validate an EU VAT number, calculate your VAT, check current VAT rates in Europe

Simple App for European people who need to validate an EU VAT number, calculate your VAT, check current VAT rates in Europe. How many euros can you save if you freelanced in another country? You can find out! Make more money now!

Nikola Franičević 8 Dec 29, 2022