xDemic mobile is a secure mobile self-sovereign identity wallet that gives you complete control over your identity and personal data.
Using xDemic you can:
- Create an identity on the Ethereum blockchain network
- Securely log-in to applications without passwords
- Manage your personal information and verifications
- Sign Ethereum transactions
This mobile wallet is your connection to the xDemic platform, an interoperable identity network for a secure, private, decentralized web. xDemic provides open protocols for decentralized identity and interoperable messaging that enable trusted source attribution for all web communication. By allowing message recipients to trust message senders without centralized servers, we can create an entirely new framework for building applications, and many developers are already building on this system.
- Install yarn with
brew install yarn
ornpm install yarn -g
- Install the latest version of Xcode
- Install React Native CLI
After cloning this repository cd into the directory
$ yarn global add react-native-cli (to install CLI)
$ yarn
Linking must be done manually. Do not run react-native link
as this will mess up the exising links.
- Install Xcode version 10+
- Install Xcode command line tools
Hit Run in X-Code and it should launch on your device. Simulator use may not support all features, always run on your device whenever possible.
$ react-native run-ios
This step depends on the JavaScript environment setup.
It's also a good idea to run yarn
every time you switch branches to sync the node_modules
folder.
- Easiest way is to install Android Studio. This will manage the android SDK for you and makes life easier for non Android devs
- Select the custom install option and select options for performance and AVD creation
- Ensure to install both the minimum SDK 21 and the latest that the current version of React Native supports from the new project settings
- Since the app uses push messaging to receive signing requests from dApps it needs to be integrated into a Firebase project.
A
google-services.json
file must be placed in theandroid/app/
folder. You can get it by creating a project in the firebase console
-
Load the
android
subfolder as a project in Android StudioDo not upgrade any dependencies (gradle) if prompted by Android Studio
-
React native uses a packaging server to enable hot-reloading during debugging. You'll need to run
yarn start
in a terminal window in the project root folder to start the packager. This needs to be done only once for a debugging session and you can use the same server between app restarts. -
With a packaging server running, you can now run the
app
runConfiguration by pressing the green play button in the tool window. -
It will take a while to start the app for the first time because the packager needs to do it's job, during which you only see a splash-screen.
After cloning repository, running yarn
and also getting a google-services.json
file,
Run this in the project root folder
$ react-native run-android
The above command also takes care of starting the packaging server. It will take a while to start the app for the first time because the packager needs to do it's job, during which you only see a splash-screen.
We're using StandardJS to maintain a consistent JavaScript style. Before submitting pull requests, please make sure that new code passes the StandardJS linter by running npm run lint
. Some style errors can be fixed automatically by running npm run lint-fix
.
Alternatively, you can install StandardJS globally with yarn global add standard
, and then for pretty output use Snazzy: yarn global add snazzy
then standard --verbose | snazzy
.
There are also a number of text editor plugins available to highlight errors during development.
We primarily use jest for unit testing. You can run all the tests once by typing:
yarn test
During development it's recommended that you leave the automatic testing code running in a window.
yarn test -- --watch
Jest tests of components, actions, reducers and selectors are mostly done using Snapshotting which means that tests will fail if you make any kind of change to a component being tested.
Have a look at the diff shown if the change is what you asked for. Type u
to update the snapshot assuming you're using the automatic version of jest.
Request / response specs can be found in our specs repo.