Skip to content
juanmendi edited this page Aug 4, 2021 · 3 revisions

Intro

Meine Checkins is a Meta-App which allows you to perform a #covid19-checkin (e.g. in a restaurant) independent of the provider. It was developed, because there was a huge demand on the market for one particular app with which many providers could be used to check in to a store/restaurant/place of business.

Meine Checkins makes contact tracing easier and it shows how important teamwork is in a pandemic. Whether you’re at a restaurant, event or hair salon - you can check in with multiple providers with just one app:

  • Sign up for free and save data securely
  • Scan QR Codes
  • You will be automatically redirected to the appropriate provider
  • A diary shows you your last check-ins

Why this App?

In times of COVID one has to fill out check-in forms at local businesses in Germany constantly, in order to leave a trace so it’s possible to prevent the virus from spreading. Because of this continuous data filling process there is also a concern about data privacy. This app solves both problems by making easier to fill the aforementioned registration form, whilst keeping the data safe on the user’s phone.

Currently the data is traced by local businesses by providing a scannable QR code sticker at the table for the customers. Once scanned, that code redirects the user to a website were they are asked to fill the registration information (name, address, phone number).

How does it work?

After downloading the app, the user has to fill in the provided fields with personal data, which will stay private and stored locally in the phone. After completing this step, the user can scan a QR code and have the check-in form automatically filled within the app. The QR codes can be from a vast array of different providers and the user can proceed to navigate through other information provided in this process (if applicable), such as viewing the restaurant menu.

All check-ins are logged in a journal within the app, in which the date and time of the visit can be verified.

Contribute

Stack

  • React Native for rendering
  • TypeScript for typing
  • redux for state management
  • react-i18next for internationalization

Setup

Follow the environment setup for react native. Some basic knowledge of TypeScript and redux would be useful but you can also have a look at the codebase.

Once you have set up your environment

  • install dependencies with yarn install and then cd ios && pod install
  • run the development server with yarn start
  • build the app and run it on a device with yarn ios or yarn android

Deployment

For deployment we have Semaphore CI setup. Once a release is ready create a branch with that release name. Test it and once is ready tag it. After that go to Semaphore and start the builds for promoting the app to Google Play and TestFlight. After that, you will have to follow the steps needed for each platform to publish the app to the Play Store and App Store.

Testing

For testing different providers you can add the provider check-in url to src/testData.ts. In development mode that URL will be listed under the Scan QR screen so you don’t need to scan the QR code (since that would be cumbersome with a device or impossible with the simulator).

If you need to transform a QR code image to an url you can use a tool like this one.

Licence

GNU AGPL (GNU Affero General Public License v3.0)

Reporting Bugs and Feaures

→ github.com/railslove/meine-checkins

Security and Data Privacy Questions

What customer information gets collected?

No customer information are collected. We only store the Name, Surname, Street, ZIP, City and the Phone number on the phone.

Who will have access to this information?

Only the user has access to this information. If the user registers with a given check-in service (i.e. scanning a QR code) the information will be passed locally to the service provider and will be processed by them. The provider is then responsible for storing the data in an encrypted and secure form and for informing the user about its privacy policy. Only the corresponding authority representatives can request the necessary data from the respective operator in case of infection. The app does not share your data.

Where will information be stored?

The information is stored on the phone and after a check-in, on the servers of the check-in service partner.

When will information be deleted?

The information stored on the phone can be deleted anytime by the user. After a checkin with a service provider the data are stored for max. 4 weeks (according to the german law Coronaschutzverordnung - CoronaSchuVO)

Will users be informed of a possible COVID infection?

No, the users will not be informed about a possible COVID infection by the app itself.

How can the Incognito-mode be activated?

Incognito mode is always used on the WebView within the app.

What permissions does the app ask for (location, bluetooth, contacts, HealthKit, Clinical Health Records etc.) and what are the permissions strings for each? If necessary, please provide English translations of the permission string.

The app asks only about the permission to use the camera to scan the barcode.

What personal information does the app require?

Name, Surname, Street, ZIP, City and the Phone number. The information are required to perform a location registration in a venue required by the German law (Coronaschutzverordnung - CoronaSchuVO)

What personal information is optional?

All personal information is mandatory.

Who in your organization has access to the information you collect?

Nobody at our organization has access to the information because the information is stored on the phone of the user only.

Is any of this data shared with any other parties? If so, provide details.

The data are shared locally (via Javascript) to third-party checkin providers to fulfill the requirement of the German law (Coronaschutzverordnung - CoronaSchuVO). We’re performing checks if third-party providers fulfill and follow the German privacy rules (DSGVO - Datenschutz). A list of apps is listed here: https://github.com/railslove/meine-checkins/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration+done%22

Beyond the permissions already described, what other disclosures and user consent steps does the app contain?

No other steps are required.

What jurisdiction(s) (i.e. region, state, country, etc.) is this app intended for?

The app is only usable in Germany.

Has this app been authorized for use by the government of that jurisdiction?

The app is authorized by the city of Cologne (Stadt Köln): stadt-koeln.de

Is the jurisdiction this app is intended for use in expected to change or expand?

No.

Is my data safe?

Your data does not leave this app. Therefore, they are safe. If you have more questions about data protection, then you can find out more about this from the providers represented.

What happens to my data?

Data protection is our highest priority. Your data will only be stored locally on your cell phone. Contact the respective check-in provider directly for further questions.

Do I have to enter my correct data?

After successfully entering the contact data, the guest receives a "check-in ticket". Here, reference is made to showing this ticket to the service staff. The staff can run through the entry of the contact data from the guest's point of view. This allows the plausibility of the data entered to be checked.

The check-in does not work - what can I do?

Please feel free to contact us at [link] if you encounter any problems and we will deal with the issue immediately. In case of problems you can still leave your data the analog way, with pen and paper.

Additional Questions

Who is My Checkins for?

The app is for all customers, guests and visitors of restaurants, cultural events, hairdressers and other services or businesses that need to track contact details according to the Corona Protection Ordinance. The app can be used to scan QR codes from different providers, the operator has the freedom to choose whose system to use.

Why should I install the app?

The app is free of charge and can be used throughout Germany. So you have little hassle when you check in, you don't need to have every app for that provider installed.

How can I check out?

When you leave the location, simply press the "Check Out" button that appears at the bottom of the app after you have checked in. If you forget, you will be automatically checked out after 4 hrs.

What is the difference between Meine Checkins and the Corona Warn app?

You should definitely keep the Corona Warn app on your phone because it serves another important purpose. We solve the problem of contact tracking and sending data to health departments. The Corona Warn app tracks your surroundings and can notify you earlier about an infection case in the environment.

How is it different from other check-in apps?

With Meine Checkins, contact tracing works independently to the provider of the service, meaning you are directed to one of the many providers websites by scanning the QR code. Your data is only stored locally on your phone. This means you don't have to download multiple apps and the restaurateur has freedom of choice when it comes to the provider.

Which providers are participating?

You can find the current providers with their logo on the website, in the app and in the imprint.

What is "Wir für Digitalisierung"?

We for Digitization is an initiative of various startups with the goal of pushing the digital diversity of contact capture.

Is the app free of charge?

The app is completely free of charge.

Can my checkins be used nationwide?

Yes, you can use the app in every state. In addition, providers of contact data collection systems will find the option "Join as a provider" in the "Check-ins" menu - if you know of a provider in your region who is not yet a member, feel free to suggest the app to them.

Why should I use this app and not other alternatives?

With this app you have the possibility to use a universal app for registering your data. In this way, you avoid downloading additional apps from the individual providers and only use one platform that has all the others integrated.

Integration Guideline Prerequisite

The Flow

  • Data stored in the app only

  • Data copied into the form of the check in provider

  • Reading data from the check in page (name of the place, confirmation information)

  • Storing contact tracing entry on the phone

  • All data stored locally

  • Changes to be done by the provider

  • Check-in form inputs should use autocomplete attributes for

    • name (or given-name and family-name separately)
    • tel
    • street-address
    • postal-code
    • address-level2
  • For signaling check-in and check-out to the app

    • the check-in element should have a data-wfd-action="check-in"
    • the check-out element should have a data-wfd-action="check-out"
  • Other data

    • the location name on an element (can be anything) with data-wfd-location="<restaurant-name>"

HTML examples

Here is how the check-in form should look like. The order of the fields doesn't matter. You can include the location on the check-in or in the check-out page.

<!-- using name only for the full user name -->
<form data-wfd-location="Frische Küche Restaurant">
  <input autocomplete="name" type="text" />
  <input autocomplete="tel" type="text" />
  <input autocomplete="street-address" type="text" />
  <input autocomplete="postal-code" type="text" />
  <input autocomplete="address-level2" type="text" />

  <button data-wfd-action="check-in" type="submit">check-in</button>
</form>

<!-- using first and last name separately -->
<form data-wfd-location="Frische Küche Restaurant">
  <input autocomplete="given-name" type="text" />
  <input autocomplete="family-name" type="text" />
  <input autocomplete="tel" type="text" />
  <input autocomplete="street-address" type="text" />
  <input autocomplete="postal-code" type="text" />
  <input autocomplete="address-level2" type="text" />

  <button data-wfd-action="check-in" type="submit">check-in</button>
</form>

Example check-out page

<form data-wfd-location="Café um die Ecke">
  <button data-wfd-action="check-out" type="submit">check-out</button>
</form>

Other data like the location can be added to any element. In these examples was added to the form for simplicity.

Clone this wiki locally