Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
alexandr7035 authored Jul 24, 2023
1 parent b05a384 commit e37d0da
Showing 1 changed file with 30 additions and 39 deletions.
69 changes: 30 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
# AffinidiID

* [About the app](#about-the-app)
* [Description](#description)
* [Gallery](#gallery)
* [Technical details](#technical-details)
* [Android](#android)
* [Used APIs](#used-apis)
* [Schemas](#schemas)

* [About the app](#about-the-app)
* [Description](#description)
* [Gallery](#gallery)
* [Technical details](#technical-details)
* [App architecture](#app-architecture)
* [Android stack](#android-stack)
* [Used APIs](#used-apis)

## About the app
### Description
**AffinidiID** is a VC wallet app built for learning purpose. Created to dive into the technical aspects of **Self-Sovereign Identity** and **Verifiable Credentials** [concepts](hhttps://academy.affinidi.com/an-in-depth-exploration-of-self-sovereign-identity-and-verifiable-credentials-1a3eb2296004) using Affinidi open APIs. The second objective was to practice with Clean Architecture.
**AffinidiID** is a VC wallet app built for learning purpose. Created to dive into the technical aspects of **Self-Sovereign Identity** and **Verifiable Credentials** [concepts](hhttps://academy.affinidi.com/an-in-depth-exploration-of-self-sovereign-identity-and-verifiable-credentials-1a3eb2296004) using Affinidi open APIs. The app was created to pactice with Clean Architecture.

Actually, it works as native android frontend close to Affinidi [wallet application](https://wallet.affinidi.com/) but with the possibility to issue a test credential. The last version covers the following use cases:
Actually, it's a native android client close to Affinidi [wallet application](https://wallet.affinidi.com/) but with the possibility to issue a test credential. The last version covers the following use cases:

**User profile**
- Sign up
Expand All @@ -29,42 +28,36 @@ Actually, it works as native android frontend close to Affinidi [wallet applicat
- View credentials (list + details)
- Share credentials via QR code
- Verify credentials
- Delete credentials from Affinidi Wallet

"Edit username" feature was deleted due to API issue. The original name becomes lost immediately after OTP is sent (without confirmation).
- Delete credentials

### Gallery
Screenshots
<p src= align="left">

#### Manage Affinidi profile
<p align="left">
<img src="https://user-images.githubusercontent.com/22574399/154146941-588fd474-39cf-4e0b-a338-dbf9c74f34d7.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/154146971-99e5fbb8-3909-48ab-8183-222def88154a.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/179850718-82da1e1a-4699-49a5-96f0-7f3b3e3a062f.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/179852439-f1fb09a6-a9ed-4b85-82da-0d21b9ece41f.png" width="20%"/>
</p>
<img src="https://github.com/alexandr7035/AffinidiID/assets/22574399/3f838a3d-00b7-43c4-803d-2970f0928859" width="20%"/>
<img src="https://github.com/alexandr7035/AffinidiID/assets/22574399/f11c9273-6206-4558-bac9-50002638dee9" width="20%"/>
<img src="https://github.com/alexandr7035/AffinidiID/assets/22574399/2404424c-b103-4dd8-8d79-768114638f82" width="20%"/>
<img src="https://github.com/alexandr7035/AffinidiID/assets/22574399/fb44b11f-b986-46b5-b218-029338f24351" width="20%"/>

#### Issue and store credentials
<p align="left">
<img src="https://user-images.githubusercontent.com/22574399/179851073-5ff5c149-5ec1-40af-a7c9-6556fb357cba.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/179851209-e017dab4-f636-4237-8b5f-28f4b38f692d.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/179851482-81473c21-c246-4e40-a2f2-9e1643dee103.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/154147804-3ce1f6ee-bcfd-4534-8667-4b4c879bc335.png" width="20%"/>
</p>

#### Share and verify credentials
Demo GIF
<p align="left">
<img src="https://user-images.githubusercontent.com/22574399/179851690-c8165a0f-b5eb-4c21-97a6-379472992ae5.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/154148769-62395099-391c-41ff-b81b-524556eaac63.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/154148903-21b9d058-98d3-4e5c-bd45-97f152a48636.png" width="20%"/>
<img src="https://user-images.githubusercontent.com/22574399/179852667-171244a5-531e-4e6b-8e55-496103b34019.png" width="20%"/>
<img src="https://github.com/alexandr7035/AffinidiID/assets/22574399/0c858b44-e530-4379-bba5-1531e1bf6974" width="20%"/>
</p>

## Technical details

### Android
### App architecture

<p align="left">
<img src="https://user-images.githubusercontent.com/22574399/154149516-e73f75e8-9ab7-46b9-8427-4d840f95215f.png" width="100%"/>
</p>

### Android stack

- Attempts to use clean architecture approach. Presentation / data / domain layers each in a separate module.
- Single activity approach and [Navigation component](https://developer.android.com/guide/navigation) (with SafeArgs) to navigate across fragments.
- Attempts to learn clean architecture approach. Presentation / data / domain layers each in a separate module.
- Single activity and [Navigation component](https://developer.android.com/guide/navigation) (with SafeArgs) to navigate across fragments.
- Kotlin coroutines for asynchronous operations.
- [Hilt](https://dagger.dev/hilt/) for dependency injection.
- [View binding](https://developer.android.com/topic/libraries/view-binding) is used to interact with views within fragments and recyclerview adapters.
Expand All @@ -73,14 +66,12 @@ Actually, it works as native android frontend close to Affinidi [wallet applicat
- [Room](https://developer.android.com/jetpack/androidx/releases/room) for credentials caching.
- [Timber](https://github.com/JakeWharton/timber) for logging.
- [CircleImageView](https://github.com/hdodenhof/CircleImageView) for rounded images, [Coil](https://github.com/coil-kt/coil) to load SVG images into ImageView.
- [ksprefs](https://github.com/cioccarellia/ksprefs) wrapper for SharedPreferences.
- [PermissionX](https://github.com/guolindev/PermissionX) lib for handling permissions.
- Unit tests (junit4)
- Kotlin for Gradle build scripts (build.gradle.kts)

### Used APIs
In this application the [Affinidi APIs](https://build.affinidi.com/docs/api) are used to create Affinidi user account and interact with the wallet.

Also [DiceBear Avatars API](https://avatars.dicebear.com/) is used to generate unique avatars depending on the user's DID.

### Schemas
<p align="left">
<img src="https://user-images.githubusercontent.com/22574399/154149516-e73f75e8-9ab7-46b9-8427-4d840f95215f.png" width="100%"/>
</p>

0 comments on commit e37d0da

Please sign in to comment.