Igrantio issuer frontend
Build the browser UI for an OpenID4VCI credential ISSUER against the iGrant.io Organisation Wallet Suite. Request in-time or deferred issuance through your tenant backend proxy, render the credential-offer QR (or same-device deep link) for an EUDI Wallet (EUDIW) or European Business Wallet (EUBW), and reflect live status over SSE (offer scanned → credential accepted). Composes igrantio-frontend-client; talks to igrantio-issuer-backend.From its SKILL.md
npx -y skills add L3-iGrant/skills --skill igrantio-issuer-frontendAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.2 KB, 865 tokens by cl100k_base, as published. Nobody here has run it
iGrant.io issuer frontend (OpenID4VCI)
When to use
Build the issuer-side UI: a user requests a credential, scans a QR (or taps a
same-device deep link), and the page updates the instant the wallet accepts.
Depends on igrantio-frontend-client (vendored at src/lib/ows/) and an
igrantio-issuer-backend deployment. Verifier UI is a separate skill
(igrantio-verifier-frontend).
Before you build: run the integrator intake in igrantio-ows-overview - environment, API key, tenancy, backend host, webhooks, frontend - one question at a time, a recommended default with each.
What it provides
useIssuance({ proxyBaseUrl, webhookBaseUrl })→{ status, offerUri, credentialExchangeId, error, issueInTime, issueDeferred, reset }.issueInTime(payload)- claims known now.issueDeferred(startRequest, claims)- create the offer now; the hook pushes the claims automatically on theoffer_receivedwebhook.status:idle → offer_ready → scanned → issued(orerror).
IssuerFlow- a minimal end-to-end demo component.
Flow (what happens)
POST …/credential/issue→ readcredentialHistory.CredentialExchangeId(SSE key) andcredentialHistory.credentialOffer(QR URI).- Open SSE on the exchange id; render the QR / same-device button. For the
full QR panel (optional centre logo, green tick on scan, refresh,
open-in-wallet button, tx-code block) use
igrantio-qr-code- it asks the integrator about the logo and tick options. - SSE
data.credential.status:offer_received→ (deferred) push claims viaPUT …/credential/history/{id}.credential_accepted/token_issued→ done, close SSE.
Steps
- Vendor
igrantio-frontend-client/references/lib/owsintosrc/lib/ows/. - Copy
./references/features/issuerintosrc/features/issuer/. npm i qrcode @types/qrcode(forQrCode).- Wire it up:
Replace the demo's hard-coded payload with your form; for namespaced formats (mdoc) nest claims under the namespace, e.g.<IssuerFlow proxyBaseUrl="https://host/ows/acme" webhookBaseUrl="https://host/webhook" credentialDefinitionId="<cred-def-id>" claims={{ given_name: "Lars", family_name: "Johansson" }} />{ "org.iso.18013.5.1": { … } }.
Clean-code notes
- No
@igrant/*SDK; OWS specifics live in the client, flow logic in the hook, presentation in the component - swap the UI without touching the flow. - The QR URI and exchange id are the only two response fields the UI needs.
Validation / done criteria
- Scanning the QR with a wallet drives
statustoissuedwithin ~1s of accept. - Deferred issuance pushes claims exactly once (on
offer_received). - No OWS API key is present anywhere in the browser bundle.
Documentation & workflows
When anything is unclear, consult the iGrant.io documentation before guessing:
- iGrant.io developer APIs (index): https://docs.igrant.io/docs/developer-apis
- Getting started: https://docs.igrant.io/docs/get-started/
- OpenID4VC API (issuer / verifier / webhook): https://docs.igrant.io/docs/category/openid4vc-api/issuer
- Workflow: issue a credential (OID4VCI): https://docs.igrant.io/docs/openID4vci-issue-credential-intime/
What ships with it: 15 files
29.6 KB alongside SKILL.md, 11 of them executable
references/
- features/issuer/IssuerFlow.tsx1.7 KB
- features/issuer/useIssuance.tsruns5.3 KB
- lib/ows/index.tsruns344 B
- lib/ows/owsClient.tsruns4.1 KB
- lib/ows/react/index.tsruns375 B
- lib/ows/react/QrCode.tsx1.3 KB
- lib/ows/react/useCredentialHistory.tsruns755 B
- lib/ows/react/useOwsClient.tsruns382 B
- lib/ows/react/usePolledResource.tsruns1.6 KB
- lib/ows/react/useSSE.tsruns1.2 KB
- lib/ows/react/useVerificationHistory.tsruns816 B
- lib/ows/sseClient.tsruns2.6 KB
- lib/ows/types.tsruns8.4 KB
- package.json443 B
- tsconfig.json312 B