Skip to content

Source code repository of "Safer Illinois" App - the official COVID-19 app of the University of Illinois.

License

Notifications You must be signed in to change notification settings

rokwire/safer-illinois-app

Safer Illinois App

The official COVID-19 app of the University of Illinois. Powered by the Rokwire Platform.

For academic references, please cite our formal release on Zenodo.
DOI

Requirements

Flutter v2.2.2

Xcode 12.5

CocoaPods 1.9.3+

Build

Clone this repo

Supply the following private configuration files:

• /.travis.yml

[No description available]

• /secrets.tar.enc

[No description available]

• /assets/configs.json.enc

  1. JSON data with the following format:
{
  "production": {
    "config_url": "https://api.rokwire.illinois.edu/app/configs",
    "api_key": "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX"
  },
  "dev": {
    "config_url": "https://api-dev.rokwire.illinois.edu/app/configs",
    "api_key": "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX"
  },
  "test": {
    "config_url": "https://api-test.rokwire.illinois.edu/app/configs",
    "api_key": "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX"
  }
}
  1. Generate random 16-bytes AES128 key.
  2. AES encrypt the JSON string, CBC mode, PKCS7 padding, using the AES.
  3. Create a data blob contains the AES key at the beginning followed by the encrypted data.
  4. Get a base64 encoded string of the data blob and save it as /assets/configs.json.enc.

Alternatively, you can use AESCrypt.encode from /lib/utils/Crypt.dart to generate content of /assets/configs.json.enc.

NB: For versions prior to 2.8.

• /assets/organizations.hook.json.enc

  1. JSON data with the following format:
{
	"url": "https://api-dev.rokwire.illinois.edu/assets/buckets/items/organizations",
	"api_key": "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX"
}
  1. Generate random 16-bytes AES128 key.
  2. AES encrypt the JSON string, CBC mode, PKCS7 padding, using the AES.
  3. Create a data blob contains the AES key at the beginning followed by the encrypted data.
  4. Get a base64 encoded string of the data blob and save it as /assets/organizations.hook.json.enc.

Alternatively, you can use AESCrypt.encode from /lib/utils/Crypt.dart to generate content of /assets/organizations.hook.json.enc.

NB: For version 2.8 and later.

• /assets/organizations.json.enc

  1. JSON data with the following format:
[
	{
		"id": "uiuc",
		"name": "UIUC",
		"icon_url": "https://upload.wikimedia.org/wikipedia/commons/7/7c/Illinois_Block_I.png",
		"default": true,
		"environments": {
			"production": {
				"url": "https://api.rokwire.illinois.edu/covid/app/configs",
				"api_key": "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX",
				"default": "release"
			},
			"dev": {
				"url": "https://api-dev.rokwire.illinois.edu/covid/app/configs",
				"api_key": "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX",
				"default": "debug"
			},
			"test": {
				"url": "https://api-test.rokwire.illinois.edu/covid/app/configs",
				"api_key": "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXX"
			}
		}
	},
  ...
]
  1. Generate random 16-bytes AES128 key.
  2. AES encrypt the JSON string, CBC mode, PKCS7 padding, using the AES.
  3. Create a data blob contains the AES key at the beginning followed by the encrypted data.
  4. Get a base64 encoded string of the data blob and save it as /assets/organizations.json.enc.

Alternatively, you can use AESCrypt.encode from /lib/utils/Crypt.dart to generate content of /assets/organizations.json.enc.

NB: Optional way to supply statically embeded organizations in appication bundle. If the list contains single organization definition the application switches to single organization mode. "/assets/organizations.hook.json.enc" must be omited from application assets in order to "/assets/organizations.json.enc" to take efect.

NB: For version 2.8 and later.

• /ios/Runner/GoogleService-Info-Debug.plist

• /ios/Runner/GoogleService-Info-Release.plist

The Firebase configuration file for iOS generated from Google Firebase console.

• /android/keys.properties

Contains a GoogleMaps and Android Backup API keys.

googleMapsApiKey=XXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXX
androidBackupApiKey=XXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXX

• /android/app/src/debug/google-services.json

• /android/app/src/release/google-services.json

• /android/app/src/profile/google-services.json

The Firebase configuration file for Android generated from Google Firebase console.

Build the project

$ flutter build apk
$ flutter build ios

NB: You may need to update singing & capabilities content for Runner project by opening /ios/Runner.xcworkspace from Xcode

About

Source code repository of "Safer Illinois" App - the official COVID-19 app of the University of Illinois.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks