How likinio365/zero-persistence-ekyc works
Zero-Persistence eKYC is a dual-ledger identity-verification product: applicants submit identity details and documents, verifiers review and decide KYC status, and verified applicants can receive credentials for wallet-based bank checks. The backend coordinates Fabric records, encrypted IPFS document storage, Vault key operations, and Indy/ACA-Py identity credentials; the bank flow uses DIDComm and proof requests without contacting the KYC backend for proof verification. Paths and links reflect the supplied tree, README capabilities, and sampled source; some route behavior is documented but not shown in full source excerpts.
Main entry points: index.ts Express API · kyc.routes.ts KYC workflows · App.tsx KYC application · api.ts KYC API client
Components 26
User applications
- KYC application
frontend/src/App.tsx - KYC submission
frontend/src/pages/Submit.tsx - Status view
frontend/src/pages/Status.tsx - Verifier panel
frontend/src/pages/Verifier.tsx - KYC API client
frontend/src/services/api.ts - Bank portal
bank-frontend/src/pages/BankPortal.tsx
Backend workflows
- Express API
backend/src/index.ts - KYC workflows
backend/src/routes/kyc.routes.ts - DID workflows
backend/src/routes/did.routes.ts - Bank proof routes
backend/src/routes/bank.routes.ts - Document endpoints
backend/src/routes/document.routes.ts
Identity and credentials
- Indy adapter
backend/src/services/indy.service.ts
KYC records and documents
- Fabric adapter
backend/src/services/fabric.service.ts - IPFS adapter
backend/src/services/ipfs.service.ts - Vault adapter
backend/src/services/vault.service.ts - KYC contract
chaincode/kyc.go - KYC state rules
chaincode/model.go
Other components
- Applicant
- KYC verifier
- BC Wallet
- Bank customer
- Fabric ledger
- IPFS Kubo
- HashiCorp Vault
- ACA-Py agents
- Indy ledger
Connections 34
- Applicant → KYC application: uses
- KYC verifier → KYC application: uses
- KYC application → KYC submission: routes to
- KYC application → Status view: routes to
- KYC application → Verifier panel: routes to
- KYC submission → KYC API client: requests
- Status view → KYC API client: requests
- Verifier panel → KYC API client: requests
- KYC API client → Express API: HTTP requests
- Bank customer → Bank portal: uses
- Bank portal → Express API: HTTP requests
- Express API → KYC workflows: dispatches
- Express API → DID workflows: dispatches
- Express API → Bank proof routes: dispatches
- Express API → Document endpoints: dispatches
- KYC workflows → Fabric adapter: reads and writes
- KYC workflows → Vault adapter: encrypts and decrypts
- KYC workflows → IPFS adapter: uploads and reads
- KYC workflows → Indy adapter: issues and revokes
- Document endpoints → Vault adapter: encrypts and decrypts
- Document endpoints → IPFS adapter: uploads and reads
- DID workflows → Indy adapter: manages DIDs
- Bank proof routes → ACA-Py agents: requests invitations and proofs
- Fabric adapter → Fabric ledger: submits and queries
- Fabric ledger → KYC contract: executes contract
- KYC contract → KYC state rules: checks transitions
- Vault adapter → HashiCorp Vault: encrypts and manages keys
- IPFS adapter → IPFS Kubo: stores and retrieves blobs
- Indy adapter → ACA-Py agents: agent API calls
- ACA-Py agents → Indy ledger: publishes and verifies
- BC Wallet → ACA-Py agents: DIDComm exchange
- ACA-Py agents → BC Wallet: credential and proof exchange
- Bank portal → BC Wallet: presents QR invitation
- BC Wallet → Indy ledger: proof verified against