Holder App

The holder app is a wallet that can be used to store the declarative details and credentials of its users. Built-in React Native it can be packaged for both IOS and Android, however, Android is the only officially supported platform.

Its features and visual components are developed for future support of a UI library enabling seamless access to SSI basic user information

Features

Read this document to learn more about how Self-sovereign identity is designed.

Flow + Screenshots

Creating an account, mnemonic and adding declarative details

Create an account

Request a credential

Requesting a credential

Credential Details and Presentation

Details

Extend (things that could be added in the future)

Extending this application will require input from the parties wishing to issuer credentials. For example, what fields should be requested and what types of credentials are offered can be customized inside the application. A few known features are the following:

Run

Setting up a Local Environment

Refer to Setting up the development environment from the official docs on setting up your environment. Use the instructions under React Native CLI Quickstart, NOT Expo.

Install dependencies

yarn

Modify Config

The Holder Application uses a .json file for configuration variables. .env files were not a good solution as the app had to be reset and the cache cleared when a change needed to be made. The initial configuration file can be found at /src/config and contains the following variables:

{
  "ISSUER_ENDPOINT": "",
  "ISSUER_DID": "",
  "IPFS_GATEWAY_ENDPOINT": "",
  "DATA_VAULT_ENDPOINT": "",
  "RSK_NODE": "",
  "CONVEY_URL": "",
  "CONVEY_DID": ""
}

The user can change any of these variables in the advanced settings screen. Once they are set there, this file is ignored until the app is reset.

Nodify

The Holder app runs React Native which requires packages only found in Node.js. As such, multiple packages are replaced using rn-nodify. These are installed after the initial yarn command. There are two additional patches that need to be made after the installation process.

Modify app-root-path:

Navigate to:

/node_modules/app-root-path/browser-shim.js

Remove or comment out line 3:

// exports.path = require('path').dirname(require.main.filename);

Modify react-native-os:

Navigate to:

node_modules\react-native-os\android\src\main\java\com\peel\react\RNOSModule.java

Remove or comment out line 31:

//  @Override

Run for Android

Connect an Android device to the computer or start an emulator.

yarn android

For Development, the following commands are helpful in clearing the cache:

./android/gradlew --clean
yarn start --reset-cache

Build Production Version

Make sure /src/config.json contains the initial paths and DIDs.

cd android
./gradlew assembly-release