eRouška (rouška = face mask in Czech) helps to fight against COVID-19

Overview

# eRouška

Platform: iOS

Download on the App Store

Read our FAQ: Czech, English

eRouška (rouška = face mask in Czech) helps to fight against COVID-19.

eRouška uses Bluetooth to scan the area around the device for other eRouška users and saves the data of these encounters.

It's the only app in Czechia authorized to use Exposure Notifications API from Apple/Google.

Who is developing eRouška?

Starting with version 2.0, the eRouška application is developed by the Ministry of Health in collaboration with the National Agency for Communication and Information Technologies (NAKIT). Earlier versions of eRouška application were developed by a team of volunteers from the COVID19CZ community. Most of original eRouška developers continue to work on newer versions in the NAKIT team.

International cooperation

We are open-source from day one and we will be happy to work with people in other countries if they want to develop a similar app. Contact David Vávra for technical details.

Building the App from the source code

Exposure notifications work only with approved Ministry account.

You can build using your own account when you delete com.apple.developer.exposure-notification entitlement from project.yml file under targets -> eRouska Dev -> entitlements -> properties and change code signing to your account.

Command line dependencies

We use Bundler and Mint to manage command line tools.

Project generation

xcodegen is used to generate project files and entitlements. To generate a project workspace, run ./setup.sh in the project root directory. It will generate project files and install all needed dependencies. Do not run pod install manually anymore. Use the setup.sh script or run bundle pod install instead.

Code signing

To update your code signing settings, you would need to copy template .xcconfig files from Configs/Templates/ directory to Configs/ directory and fill them with proper values. xcodegen is looking for these files in Configs directory and use them in project generation. All .xcconfig files in Configs directory are ignored by git, so you don't have to worry about accidentally pushing your code signing settings or pulling somebody elses.

Contributing

We are happy to accept pull requests! See Git Workflow.

If you want to become a more permanent part of the team, join our Slack, channel #erouska.

Translations

Help us translate to your language or if you see a problem with translation, fix it. Our translation is open to volunteers at OneSky.

Git workflow

  • Work in a fork then send a pull request to the develop branch.
  • Releases are tagged.
Comments
  • ContactTracing

    ContactTracing

    Zdravím, nejprve samozřejmě díky za chvályhodnou iniciativu. Asi jste už slyšeli o alternativním řešení, skrze framework ContactTracing. Měl jsem trochu času, tak jsem zkusil naimplementovat základní řešení na základě článku na https://nshipster.com/contact-tracing/ do branche https://github.com/janremes/erouska-ios/tree/feature/jr/contact-tracing-test

    Podle mě by to mohlo mít základní výhody:

    1. Mělo by to umět používat advertising i v backgroundu bez omezení
    2. Pravděpodobně to nebude tolik žrát baterku

    Já jsem zatím naimplementoval protokoly pro známé API a napsal si k tomu vlastní providery, aby se to dalo začít testovat.

    Tohle issue zakládám jestli by byl teoreticky zájem to dokončit a připravit PR? Napojit na Realm atd.

    Ve finále by to potřebovalo alespoň minimální backend API na sdílení daily keys a označení, které keys jsou exposed. Aby se ty keys mohli předat ContactTracingu. Jestli to je blbost a nemá to smysl řešit dál, tak také dejte vědět. Díky!

    opened by janremes 11
  • Rizikové setkání - nepřesná informace?

    Rizikové setkání - nepřesná informace?

    Dobrý den, čerstvě po instalaci mi sekce Rizikové setkání píše "V posledních 14 dnech nebyla ve vaš blízkosti žádná osoba s potvrzeným onemocněním COVID-19".

    Je tato informace přesná, tedy používá aplikace data, která "potichu" posledních 14 dní sbíral systém? Nebo je to číslo 14 hardcodované a tudíž nepřesné? Mělo by se možná namísto toho používat min(počet dní od instalace, 14)...

    enhancement 
    opened by ondrejmirtes 6
  • Add Swiftformat to enforce consistent Swift style

    Add Swiftformat to enforce consistent Swift style

    • Added .swiftformat file with a set of rules to be enforced
    • Formatted code

    The tool can be found here, list of all available rules here.

    To format code, one simply calls swiftformat . from the project's directory.

    This can be either set-up to be run on a CI server in the future, or as a build phase script.

    Feedback appreciated.

    opened by michalsrutek 6
  • implementace Apple COVID-19 exposure API

    implementace Apple COVID-19 exposure API

    Zvazuje se aplikaci prepracovat tak aby pouzivala oficialni Apple COVID-19 Expose API? Prijde me ze soucasne reseni ma na iOS problemy s detekci kdyz bezi na pozadi, velmi casto nenfunguje, a neustale mit otevrenou aplikaci je neprakticke.

    Podle poslednich informaci ma byt erouska take soucasti oficialni chytre karanteny takze by to mel byt kandidat prave na toto reseni? Myslim ze Apple prave povoluje pouze jednu aplikaci na zemi - asi by davalo smyl kdyby to byla prave erouska?

    enhancement 
    opened by emx0r 5
  • Unregister user even with an error

    Unregister user even with an error

    Is there a reason not to let the user unregister if there's been an error in the unregister request? If not, then this is a fix to the following.

    Steps to reproduce

    • Register on a device A
    • Register on a device B using the same number
    • Unregister on A
    • Try to unregister on B - an error alert shown, nothing happens
    • Now the on device B can't ever get unregistered
    opened by michalsrutek 5
  • Update EN strings

    Update EN strings

    This is a highly requested feature by the expats (like myself) living in the Czech Republic.

    It would be very helpful to get a review from a Czech native speaker. I used Google translator, then corrected a few sentences.

    It hasn't been tested on the application. Hopefully all fits well into the UI.

    opened by patricksmms 3
  • Verze 1.2 nelze spustit

    Verze 1.2 nelze spustit

    Po aktualizaci na verzi 1.2 aplikace nelze nadale pouzit. Po spusteni ukazuje spashscreen ze je k dispozici novejsi aktualizace, ta ale samozrejme neexistuje

    opened by emx0r 3
  • Neplatné tel cislo

    Neplatné tel cislo

      1. 2020 Po více než 100 dnech dobrovolníci ze zdravotnické linky s volbou 2 pod celostátní infolinkou 1212 ukončují činnost. Řešili tisíce dotazů veřejnosti po celý průběh epidemie covid-19. Zdravotnická linka nyní přechází přímo pod oddělení pro veřejnost Ministerstva zdravotnictví s novým jednotným číslem 224 972 222. Jde o oficiální linku pro veřejnost ke všem zdravotnickým tématům, nejen koronavirovým. V erousce je stále puvodni 1212 041E08A9-D492-494D-9C68-00A3686EDD73 Uploading 81B29EB0-5929-42B5-ADEC-006DF8B6437D.png…
    good first issue 
    opened by michalblaha 3
  • Validace zahranicnich telefonich cisel

    Validace zahranicnich telefonich cisel

    Validace nefunguje správně, nevím jestli je to designová chyba (uživatel by měl být vyzván k zadání pouze českého číslo), nebo technická.

    Pro Dánske číslo, lze zadat spravnou předvolbu +45 bez námitek aplikace, ale při zadání čísla samotneho XX XX XX XX, nelze zvalidovat protože se očekává 9-ti ciferné číslo.

    opened by Kioshi 3
  • Na uvodní obrazovce mi aplikace

    Na uvodní obrazovce mi aplikace "blika"

    Na úvodní obrazovce, se obrazovka zhasne pokud omylem zakryji prstem senzor přiblížení. Takto obrazovka zhasne pokud je zakrytý, pokud prsty oddělám, obrazovka se rozsvítí. (Všiml jsem si toho náhodou, ale dělat by to podle mě nemělo....)

    e-rouska

    iPhone 7 (32GB)

    opened by pavelkaste 3
  • K zamyšlení - tab Moje data

    K zamyšlení - tab Moje data

    Celkově mi ta obrazovka přijde taková „přetechnizovaná“. Myslím pro běžné smrtelníky.

    Screen Shot 2020-04-12 at 12 28 57

    Úvodní text

    Vyhledávání ostatních zařízení ve vašem okolí je na telefonech iPhone při zhasnutém displeji méně účinné.

    • Aplikace pro iPhone, netřeba zdůrazňovat na telefonech iPhone.
    • Věta říká, že je to méně účinné, tj. říká co nefunguje, ale neříká jak to zlepšit.

    Osobně bych to přepsal na něco jako:

    Pro účinnější vyhledávání ostatních zařízení doporučujeme nezamykat telefon a nechat aplikaci spuštěnou.

    Případně celé vyhodil neb se to duplikuje s textem na tabu eRouška (Na místech s větší koncentrací lidí nechte aplikaci spuštěnou při ...).

    Tabulka

    • Kdo z nich ví co je RSSI?
    • Kdo z nich ví co je ID?
    • Zbývá Datum & Čas, k čemu to těm lidem je?

    Předpokládám, že ten důvod je: ukázat lidem co sdílejí. IMHO lepší by bylo:

    • Dát tam počet všech setkání
    • Dát tam počet blízkých setkání
    • Nad tlačítko Odeslat data dát další vysvětlení co to udělá

    Tlačítko Odeslat data

    • Zdůraznil bych anonymizovaná
    • Nad to tlačítko přidal vysvětlující text

    Neboli bych udělal něco na tento způsob:

    Screen Shot 2020-04-12 at 13 04 43

    Nezapomenout, že ...

    • spousta lidí se bojí sdílet data,
    • je potřeba zdůraznit slovo anonymizované,
    • místo RSSI, ID, ... jim ukázat jen počet setkání, nestrašit je informacemi, kterým nerozumí („Co je RSSI?“ Není to náhodou místo kde jsem byl? „Co je ID?“ Není to identifikátor nějakého místa?)

    Just my $0.02 ...

    opened by zrzka 3
  • Network error není čitelný

    Network error není čitelný

    Když jsem se snažil refreshnout statistiky na stránce novinek, dostal jsem výjimku (předpokládám, že NetworkException), ale ta se hned schová. Vypadá to ale, že ta by měla na obrazovce zůstat, dokud se nevytvoří nějaká uživatelská interakce.

    https://user-images.githubusercontent.com/29888641/124449415-bc079580-dd83-11eb-8fe6-f0211539d467.MOV

    opened by filiptronicek 0
  • Jak detekovat fungující eroušku

    Jak detekovat fungující eroušku

    Zdravím, omlouvám se pokud sem dotazy nepatří, ale připadalo mi že to možná může být užitečné nebo inspirativní pro ostatní vývojáře.

    Až se zruší lockdown (který prý neexistuje ;-)), tak by provozovatelé restaurací a událostí možná chtěli pouštět jen zákazníky se zapnutou erouškou (nebo ekvivalentem) jak to fungovalo v Číně. Přemýšlím jak toto ověřování dělat automatizovaně (např. mobilem nebo klidně turniketem) - mobil se přiloží a zařízení ověří že Exposure Notification API v tomto telefonu komunikuje.

    Jde to tak jak si představuji?

    Chtělo by se někomu kvalifikovanému minimálně nastínit jak by se to dalo implementovat?

    Osobně mě zajímá hlavně implementace v existujícím přístupovém systému, která běží na ESP32 kontroléru, který má Bluetooth 5 (tedy docela přesné měření vzdálenosti a směru) a MicroPython (dokumentace BLE). Nic ale nebrání kdyby to bylo uvolněno jako samostatná knihovna pro MicroPython. Udělat pak "verifikační zařízení" co se rozsvítí když se přiloží mobil by pak byla brnkačka.

    opened by iBobik 1
Owner
COVID19CZ
COVID19CZ
iOS application to help fight COVID-19

iOS application to help fight COVID-19 This app is aiming at helping fight COVID-19 spread by collecting anonymous data about people meeting each othe

Covid World 12 Feb 9, 2022
Acčento is an easy-to-use tool for adding Czech diacritics to copied text.

Acčento is an easy-to-use tool for adding Czech diacritics to copied text. The app lives in the menu bar and is activated using a global hot key.

Matty Cross 3 Sep 16, 2021
CoreML-Face-Parsing - how to use face-parsing CoreML model in iOS

CoreML-Face-Parsing The simple sample how to use face-parsing CoreML model in iO

MLBoy 6 Oct 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
Input Mask is an Android & iOS native library allowing to format user input on the fly.

Migration Guide: v.6 This update brings breaking changes. Namely, the autocomplete flag is now a part of the CaretGravity enum, thus the Mask::apply c

red_mad_robot 548 Dec 20, 2022
Animated Mask Label is a nice gradient animated label.

Animated Mask Label Demo Screen Screenshot Demo/Example For demo: $ pod try AnimatedMaskLabel To run the example project, clone the repo, and run pod

Jogendra 19 Dec 13, 2022
A segment switcher with dynamic text mask effect

DynamicMaskSegmentSwitch A segment switcher with dynamic text mask effect ##Preview: Indicator will bounce when progress less than 0 or larger than 1.

Qitao Yang 309 Oct 7, 2022
A prototype of custom tab bar using SwiftUI with techniques of mask + matchedGeometryEffect

SliderTabBar A prototype of custom tab bar using SwiftUI with techniques of mask

Ka Kui 1 Dec 24, 2021
Swift plugin which allow add mask to input field

AKMaskField AKMaskField is UITextField subclass which allows enter data in the fixed quantity and in the certain format (credit cards, telephone numbe

Artem Krachulov 347 Jul 19, 2022
VMaskTextField is a library which create an input mask for iOS.

VMaskTextField An inputmask helps the user with the input by ensuring a predefined format. This can be useful for dates, numerics, phone numbers etc U

Vinícius Oliveira 384 Jul 20, 2022
🎉 WWDC 2021 Swift Student Challenge Winner 🎉 Dance Party allows users to record choreography and play against other users to try and match the key poses!

?? Dance Party ?? ?? WWDC 2021 Swift Student Challenge Winner ?? Installation Steps (Works on iPad Only) Clone or Download Unzip the .playgroundbook.z

Alan Yan 7 Oct 17, 2022
🔒 Swift Obfuscator that protects iOS apps against reverse engineering attacks.

struct fjiovh4894bvic: XbuinvcxoDHFh3fjid { let VNfhnfn3219d: Vnahfi5n34djga func cxncjnx8fh83FDJSDd() -> Lghbna2gf0gmh3d { return vPAOSNdcbif

Bruno Rocha 2.1k Jan 9, 2023
A Quick macOS app that will check a website's sitemap.xml against a new domain

Migrator Quick and dirty native macOS app that will check a website's sitemap.xml against a new domain. When you're developing your new website and wa

Stanislas Chevallier 0 Nov 8, 2021
Wi-attack: Cross-technology Impersonation Attack against iBeacon Services

Wi-attack: Cross-technology Impersonation Attack against iBeacon Services

Naxin 3 Nov 30, 2021
Brain training Rock, Paper, Scissors game where user must purposefully win or lose against computer

RockPaperScissors This is a Rock, Paper, Scissors game that includes an addition

Bogdan Alex Ciobanu 0 Dec 18, 2021
A script to fetch packages via Github search and diff them against SPI

spi-package-importer importer is a command line utility with three subcommands: fetch package lists from Github via search and save them to JSON files

Swift Package Index 1 Jan 17, 2022
A proof-of-concept WebURL domain renderer, using a port of Chromium's IDN spoof-checking logic to protect against confusable domains

WebURLSpoofChecking A proof-of-concept WebURL.Domain renderer which uses a port of Chromium's IDN spoof-checking logic (Overview, Implementation) to p

Karl 3 Aug 6, 2022
Sample iOS AR app that demonstrates how to capture the texture of a user's face in realtime.

Sample iOS AR app that demonstrates how to capture the texture of a user's face in realtime. This texture can be used to create a simple textured 3D face model.

Matt Bierner 58 Dec 14, 2022
Face detection and recognition iOS app with OpenCV

Facemotion Facemotion it's an iOS app, allowing you to find easily a contact by face recognition. Scan the face of a person, whether the contact is in

Remi ROBERT 170 Nov 15, 2022