Skip to content

Commit 4e2f87b

Browse files
authored
update get started docs with the changes from v0.100.0 migration (#86)
* migate get started guide to use multipaz v0.100.0 Signed-off-by: VishnuSanal <t.v.s10123@gmail.com> * update backlinks after get started migration Signed-off-by: VishnuSanal <t.v.s10123@gmail.com> --------- Signed-off-by: VishnuSanal <t.v.s10123@gmail.com>
1 parent af33fba commit 4e2f87b

13 files changed

Lines changed: 141 additions & 118 deletions

docs/getting-started/1-issuer.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ kotlin {
4747
}
4848
```
4949

50-
Refer to **[this provisioning build.gradle.kts code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/feature/provisioning/build.gradle.kts)** for the complete example.
50+
Refer to **[this provisioning build.gradle.kts code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/feature/provisioning/build.gradle.kts)** for the complete example.
5151

5252
Also add the dependency in `composeApp/build.gradle.kts`:
5353

@@ -63,7 +63,7 @@ kotlin {
6363
}
6464
```
6565

66-
Refer to **[this composeApp build.gradle.kts code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/composeApp/build.gradle.kts#L47)** for the complete example.
66+
Refer to **[this composeApp build.gradle.kts code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/composeApp/build.gradle.kts#L47)** for the complete example.
6767

6868
## **Dependencies**
6969

@@ -86,7 +86,7 @@ ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "kto
8686
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" }
8787
```
8888

89-
Refer to [**this libs.versions.toml code**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/gradle/libs.versions.toml#L50-L54) for the complete example.
89+
Refer to [**this libs.versions.toml code**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/gradle/libs.versions.toml#L50-L54) for the complete example.
9090

9191
Update `core/build.gradle.kts`:
9292

@@ -116,7 +116,7 @@ kotlin {
116116
}
117117
```
118118

119-
Refer to [**this build.gradle.kts code**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/build.gradle.kts#L27-L49) for the complete example.
119+
Refer to [**this build.gradle.kts code**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/build.gradle.kts#L27-L49) for the complete example.
120120

121121
### **iOS Setup**
122122

@@ -184,7 +184,7 @@ If you prefer to edit the XML directly, add the following to your `Info.plist` f
184184
</array>
185185
```
186186

187-
Refer to **[this Info.plist code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/iosApp/iosApp/Info.plist#L7-L39)** for the complete example.
187+
Refer to **[this Info.plist code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/iosApp/iosApp/Info.plist#L7-L39)** for the complete example.
188188

189189
#### **Step 2: Configure ContentView.swift**
190190

@@ -202,7 +202,7 @@ struct ContentView: View {
202202
}
203203
```
204204

205-
Refer to **[this ContentView.swift code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/iosApp/iosApp/ContentView.swift)** for the complete example.
205+
Refer to **[this ContentView.swift code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/iosApp/iosApp/ContentView.swift)** for the complete example.
206206

207207
#### **Step 3: Implement URL Handler in MainViewController.kt**
208208

@@ -220,7 +220,7 @@ fun HandleUrl(url: String) {
220220
}
221221
```
222222

223-
Refer to **[this MainViewController.kt code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/composeApp/src/iosMain/kotlin/org/multipaz/getstarted/MainViewController.kt)** for the complete example.
223+
Refer to **[this MainViewController.kt code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/composeApp/src/iosMain/kotlin/org/multipaz/getstarted/MainViewController.kt)** for the complete example.
224224

225225
#### **Step 4: Build and Run iOS App**
226226

@@ -298,7 +298,7 @@ Update `androidMain/AndroidManifest.xml`:
298298
</application>
299299
```
300300

301-
Refer to [**this AndroidManifest.xml code**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/composeApp/src/androidMain/AndroidManifest.xml#L60-L126) for the complete example.
301+
Refer to [**this AndroidManifest.xml code**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/composeApp/src/androidMain/AndroidManifest.xml#L60-L126) for the complete example.
302302

303303
### Choosing a link strategy
304304

@@ -349,7 +349,7 @@ class MainActivity : FragmentActivity() {
349349
}
350350
```
351351

352-
Refer to [**this MainActivity.kt code**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/composeApp/src/androidMain/kotlin/org/multipaz/getstarted/MainActivity.kt#L14-L48) for the complete example.
352+
Refer to [**this MainActivity.kt code**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/composeApp/src/androidMain/kotlin/org/multipaz/getstarted/MainActivity.kt#L14-L48) for the complete example.
353353

354354
## **Initialize Issuance in App**
355355

@@ -393,7 +393,7 @@ class App {
393393
}
394394
```
395395

396-
Refer to [**this initialization code**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/composeApp/src/commonMain/kotlin/org/multipaz/getstarted/App.kt#L46-L78) for the complete example.
396+
Refer to [**this initialization code**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/composeApp/src/commonMain/kotlin/org/multipaz/getstarted/App.kt#L46-L78) for the complete example.
397397

398398
2. Add URL handling for credential offers and app links:
399399

@@ -426,7 +426,7 @@ class App {
426426
}
427427
```
428428

429-
Refer to [**this URL handling code**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/composeApp/src/commonMain/kotlin/org/multipaz/getstarted/App.kt#L80-L95) for the complete example.
429+
Refer to [**this URL handling code**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/composeApp/src/commonMain/kotlin/org/multipaz/getstarted/App.kt#L80-L95) for the complete example.
430430

431431
3. Wire the issuance loop and provisioning bottom sheet in `Content()` composable:
432432

@@ -497,7 +497,7 @@ class App {
497497

498498
The `ProvisioningBottomSheet` composable is placed outside the `NavHost` — it overlays the current screen as a bottom sheet when provisioning is active, and dismisses automatically when complete. `clientPreferences` and `backend` are passed as `kotlinx.coroutines.CompletableDeferred` so the bottom sheet can suspend until the wallet back-end is ready.
499499

500-
Refer to [**this UI implementation code**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/composeApp/src/commonMain/kotlin/org/multipaz/getstarted/App.kt#L97-L207) for the complete example.
500+
Refer to [**this UI implementation code**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/composeApp/src/commonMain/kotlin/org/multipaz/getstarted/App.kt#L97-L207) for the complete example.
501501

502502
4. Implement `httpClientEngineFactory` in `Platform.kt`
503503

@@ -506,7 +506,7 @@ Refer to [**this UI implementation code**](https://github.com/openwallet-foundat
506506
expect val httpClientEngineFactory: HttpClientEngineFactory<*>
507507
```
508508

509-
See the [**`commonMain/Platform.kt`**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/Platform.kt) file for the complete implementation.
509+
See the [**`commonMain/Platform.kt`**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/Platform.kt) file for the complete implementation.
510510

511511
#### Android Implementation
512512

@@ -517,7 +517,7 @@ actual val httpClientEngineFactory: HttpClientEngineFactory<*> by lazy {
517517
}
518518
```
519519

520-
See the [**`androidMain/Platform.kt`**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/androidMain/kotlin/org/multipaz/getstarted/core/Platform.kt) file for the complete implementation.
520+
See the [**`androidMain/Platform.kt`**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/androidMain/kotlin/org/multipaz/getstarted/core/Platform.kt) file for the complete implementation.
521521

522522
#### iOS Implementation
523523

@@ -528,7 +528,7 @@ actual val httpClientEngineFactory: HttpClientEngineFactory<*> by lazy {
528528
}
529529
```
530530

531-
See the [**`iosMain/Platform.kt`**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/iosMain/kotlin/org/multipaz/getstarted/core/Platform.kt) file for the complete implementation.
531+
See the [**`iosMain/Platform.kt`**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/iosMain/kotlin/org/multipaz/getstarted/core/Platform.kt) file for the complete implementation.
532532

533533
5. Add a button to the Multipaz Issuer Website
534534

@@ -582,7 +582,7 @@ private fun DocumentSection(
582582
}
583583
```
584584

585-
Refer to **[this code from `HomeScreen.kt`](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/composeApp/src/commonMain/kotlin/org/multipaz/getstarted/HomeScreen.kt#L206-L221)** for the full implementation
585+
Refer to **[this code from `HomeScreen.kt`](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/composeApp/src/commonMain/kotlin/org/multipaz/getstarted/HomeScreen.kt#L206-L221)** for the full implementation
586586

587587
## **ProvisioningSupport & OpenID4VCILocalBackend**
588588

@@ -661,7 +661,7 @@ class ProvisioningSupport(
661661
}
662662
```
663663

664-
You can refer to the [**full `ProvisioningSupport` file here**](https://github.com/openwallet-foundation/multipaz-samples/blob/84f40a73f9fb4bd6f4d38c00d5130df622f0e938/MultipazGettingStartedSample/feature/provisioning/src/commonMain/kotlin/org/multipaz/getstarted/provisioning/ProvisioningSupport.kt).
664+
You can refer to the [**full `ProvisioningSupport` file here**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/feature/provisioning/src/commonMain/kotlin/org/multipaz/getstarted/provisioning/ProvisioningSupport.kt).
665665

666666
* `OpenID4VCILocalBackend` implements:
667667
* `createJwtClientAssertion(authorizationServerIdentifier: String): String`
@@ -690,7 +690,7 @@ class OpenID4VCILocalBackend : OpenID4VCIBackend {
690690
}
691691
```
692692

693-
You can copy-paste the [**`OpenID4VCILocalBackend` file for the complete implementation**](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/feature/provisioning/src/commonMain/kotlin/org/multipaz/getstarted/provisioning/OpenID4VCILocalBackend.kt).
693+
You can copy-paste the [**`OpenID4VCILocalBackend` file for the complete implementation**](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/feature/provisioning/src/commonMain/kotlin/org/multipaz/getstarted/provisioning/OpenID4VCILocalBackend.kt).
694694

695695
## **Wallet back end vs Issuer**
696696

docs/getting-started/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ We have split this guide into three parts. Each of which is split into the type
3838
* On how to deploy an issuance server.
3939
* This page focuses on how to issue verifiable credentials to users in a secure and standards-compliant way, following protocols like OpenID4VCI
4040

41-
The implementations used in this guide can be found **[here in the sample repository](https://github.com/openwallet-foundation/multipaz-samples/tree/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample)**.
41+
The implementations used in this guide can be found **[here in the sample repository](https://github.com/openwallet-foundation/multipaz-samples/tree/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample)**.
4242

4343
<div style={{
4444
background: "var(--ifm-background-surface-color)",

docs/getting-started/holder/01-storage.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ interface AppContainer {
5454
}
5555
```
5656

57-
Refer to **[this AppContainer code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainer.kt#L16-L19)** for the complete example.
57+
Refer to **[this AppContainer code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainer.kt#L16-L19)** for the complete example.
5858

5959
* Now, override them in the implementation class
6060

@@ -114,4 +114,4 @@ object CredentialDomains {
114114
}
115115
```
116116

117-
Refer to **[this storage code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L62-L66)** for the complete example.
117+
Refer to **[this storage code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L63-L67)** for the complete example.

docs/getting-started/holder/02-documentstore.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ interface AppContainer {
3939
}
4040
```
4141

42-
Refer to **[this AppContainer code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainer.kt#L21-L22)** for the complete example.
42+
Refer to **[this AppContainer code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainer.kt#L21-L22)** for the complete example.
4343

4444
```kotlin
4545
// core/src/commonMain/kotlin/.../core/AppContainerImpl.kt
@@ -71,4 +71,4 @@ class AppContainerImpl : AppContainer {
7171

7272
By clearly structuring the setup of `DocumentTypeRepository` and `DocumentStore`, you ensure your app is ready to manage identity documents securely and efficiently. Always perform this setup early in your app lifecycle, after initializing storage and secure areas.
7373

74-
Refer to **[this DocumentStore code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L68-L75)** for the complete example.
74+
Refer to **[this DocumentStore code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L69-L76)** for the complete example.

docs/getting-started/holder/03-creation.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ val validFrom = now
2222
val validUntil = now + 365.days
2323
```
2424

25-
Refer to **[this timestamp code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L80-L84)** for the complete example.
25+
Refer to **[this timestamp code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L81-L85)** for the complete example.
2626

2727
#### 2. Generate IACA Certificate
2828

@@ -35,7 +35,7 @@ val iacaCert =
3535

3636
These certificate files can be downloaded from the following links. They should be placed inside `core/src/commonMain/composeResources/files`:
3737

38-
* [**iaca_certificate.pem**](https://raw.githubusercontent.com/openwallet-foundation/multipaz-samples/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/composeResources/files/iaca_certificate.pem)
38+
* [**iaca_certificate.pem**](https://raw.githubusercontent.com/openwallet-foundation/multipaz-samples/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/composeResources/files/iaca_certificate.pem)
3939

4040
We are embedding IACA certificate into the app right now. In a production environment you'll them load from a server.
4141

@@ -60,7 +60,7 @@ val dsCert = MdocUtil.generateDsCertificate(
6060
)
6161
```
6262

63-
Refer to **[this DS certificate code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L86-L99)** for the complete example.
63+
Refer to **[this DS certificate code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L87-L100)** for the complete example.
6464

6565
#### 4. Creating a Document
6666

@@ -77,7 +77,7 @@ if (documentStore.listDocuments().isEmpty()) {
7777
}
7878
```
7979

80-
Refer to **[this document creation code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L101-L124)** for the complete example.
80+
Refer to **[this document creation code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L102-L125)** for the complete example.
8181

8282
#### 5. Create the mDoc Credential
8383

@@ -110,7 +110,7 @@ if (documentStore.listDocuments().isEmpty()) {
110110

111111
By following these steps, you can securely create and provision an mDoc credential, ready to be managed and used within your application.
112112

113-
Refer to **[this MdocCredential creation code](https://github.com/openwallet-foundation/multipaz-samples/blob/3f65d0c88e97c7d0ade2b9ac80ded625a23cd553/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L77-L124)** for the complete example.
113+
Refer to **[this MdocCredential creation code](https://github.com/openwallet-foundation/multipaz-samples/blob/36906be0fd4c686460a1cb5bfd3cc27868ba12b0/MultipazGettingStartedSample/core/src/commonMain/kotlin/org/multipaz/getstarted/core/AppContainerImpl.kt#L78-L125)** for the complete example.
114114

115115
:::info Looking for a more realistic flow?
116116
The example above uses helpful defaults for quick onboarding. If you're exploring how to construct credentials manually — including MSO creation, issuer namespaces, and authentication — check out this [advanced sample](https://github.com/dzuluaga/multipaz-getting-started-testing/blob/v1.1.0-age-verification/composeApp/src/commonMain/kotlin/org/example/project/App.kt#L539-L727) created by a core contributor.

0 commit comments

Comments
 (0)