> ## Documentation Index
> Fetch the complete documentation index at: https://echomate.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Start integrating zero-knowledge identity into your Algorand application in under 5 minutes.

## Setup your Development Environment

You'll need an active Algorand dApp and Node.js installed to use the AlgoKYC React widget.

### 1. Install the SDK

Install the `algokyc-sdk` from npm. This package contains both the React frontend widget and the server-side verification utilities.

```bash theme={null}
npm install algokyc-sdk
```

### 2. Add the React Widget

Import the `<AlgoKYC />` component into your application. Place it wherever you want users to initiate the KYC process.

```tsx src/App.tsx theme={null}
import { AlgoKYC } from 'algokyc-sdk';

export default function MyDeFiApp() {
  const handleVerificationSuccess = (credential) => {
    console.log("User successfully verified with Nullifier:", credential.nullifier);
    // Proceed to unlock regulated features (e.g., funding an account)
  };

  return (
    <div>
      <h1>Welcome to My DeFi Protocol</h1>
      <p>Please complete KYC before trading.</p>
      
      {/* 
        The appId is REQUIRED. This ensures the user's nullifier is completely 
        unique to your application, preventing cross-app tracking.
      */}
      <AlgoKYC 
        appId="my-defi-protocol-v1" 
        onVerified={handleVerificationSuccess} 
      />
    </div>
  );
}
```

### 3. Verify on your Backend (Optional but Recommended)

If your architecture includes a separate backend (Node.js, python, etc.), you must independently verify that the wallet actually holds the credential before allowing database operations. You can do this without seeing any PII.

```typescript src/server/api.ts theme={null}
import { checkKYCStats } from 'algokyc-sdk';
import algosdk from 'algosdk';

// Initialize your Algod Client (Testnet or Mainnet)
const algodClient = new algosdk.Algodv2('', 'https://testnet-api.algonode.cloud', '');

// The standard AlgoKYC NullifierRegistry App ID on Testnet
const REGISTRY_APP_ID = 756272073;

export async function checkUserStatus(walletAddress: string) {
  // Queries the Algorand blockchain and the Sparse Merkle Tree
  const isVerified = await checkKYCStats(algodClient, walletAddress, REGISTRY_APP_ID);
  
  if (isVerified) {
    return { status: "approved", message: "User is KYC verified and not revoked." };
  } else {
    return { status: "rejected", message: "KYC missing, revoked, or fraud detected." };
  }
}
```

## How it works for your Users

When your users click the widget:

1. They securely download an Offline XML from the government UIDAI portal.
2. The widget generates the zero-knowledge proof *locally on their device*.
3. Their raw data is immediately deleted from memory.
4. The cryptographic proof is submitted to the Algorand blockchain.
5. They receive an anonymous, non-transferable credential in their wallet.
6. The `onVerified` callback fires, returning control to your application.

![](https://mintcdn.com/echomate/He5xTFs6UzXXiORR/images/checks-passed.png?fit=max\&auto=format\&n=He5xTFs6UzXXiORR\&q=85\&s=6fea6791e62a40954749bef0c8169696)

[Dive into the cryptographic architecture](https://echomate.mintlify.site/architecture.md) or [read about our Shamir key security model](https://echomate.mintlify.site/security.md) to understand how we make this legally compliant via conditional accountability.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.