A Next.js-based KYC verification platform using Reclaim Protocol for zero-knowledge proof verification and NFT-based credentials on Rayls Network testnet.
- 🔐 Dynamic Wallet Integration - Seamless wallet connection with Dynamic
- ✅ KYC Verification - Verify identity using Reclaim Protocol with Coinbase and Binance
- 🎫 NFT Credentials - Receive NFT credentials upon successful verification
- 💎 3D NFT Display - Beautiful passport-style NFT cards with glow effects
- 🏦 KYC-Gated Vault - Demo vault that requires KYC NFT for deposits
- 🎨 Modern UI - Built with Shadcn UI components and Tailwind CSS
- Framework: Next.js 14 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: Shadcn UI
- Wallet: Dynamic Wallet
- Blockchain: Rayls Network Testnet
- Web3: Wagmi + Viem
- Animations: Framer Motion
- KYC: Reclaim Protocol
- Node.js 18+
- pnpm
- Clone the repository:
git clone <repository-url>
cd rayls-front- Install dependencies:
pnpm install- Set up environment variables:
cp .env.example .env.localUpdate .env.local with your configuration:
NEXT_PUBLIC_DYNAMIC_ENVIRONMENT_ID- Your Dynamic wallet environment ID- Contract addresses for NFT and Vault contracts
- Reclaim Protocol app ID
- Update chain configuration:
Edit
lib/chains.tswith the correct Rayls Network testnet details:
- Chain ID
- RPC URL
- Block explorer URL
-
Update contract addresses: Edit
lib/contracts.tswith your deployed contract addresses -
Run the development server:
pnpm devOpen http://localhost:3000 in your browser.
rayls-front/
├── app/
│ ├── api/
│ │ └── verify-callback/ # Reclaim Protocol callback handler
│ ├── dashboard/ # Tier 1 KYC Dashboard
│ ├── tier2/ # Tier 2 institutional dashboard
│ ├── demo/ # Vault deposit demo
│ ├── layout.tsx # Root layout with providers
│ ├── page.tsx # Landing page
│ └── globals.css # Global styles
├── components/
│ ├── providers/
│ │ └── dynamic-provider.tsx # Dynamic wallet provider
│ ├── ui/ # Shadcn UI components
│ ├── navbar.tsx # Navigation bar
│ └── nft-card.tsx # NFT display component
├── lib/
│ ├── chains.ts # Rayls Network configuration
│ ├── contracts.ts # Contract ABIs and addresses
│ ├── reclaim.ts # Reclaim Protocol integration
│ └── utils.ts # Utility functions
└── package.json
- Landing Page - Users land on the homepage
- Connect Wallet - Users connect using Dynamic wallet in the navbar
- Tier 1 KYC Dashboard - View available KYC verification collections
- Tier 2 KYC Dashboard - Upload sovereign KYC PDFs, run liveliness checks, send encrypted dossiers to tenants
- Verify - Click "Verify Now" to initiate Reclaim Protocol verification
- Receive NFT - Upon successful verification, receive KYC NFT
- View NFTs - See verified NFTs with beautiful 3D passport-style cards
- Demo - Use the demo vault to deposit ETH (requires KYC NFT)
Currently supported:
- Coinbase KYC - Verify using Coinbase credentials
- Binance KYC - Verify using Binance credentials
The system is designed to be extensible for additional verification methods.
- Navigate to the Demo page
- Attempt to deposit ETH (will fail without KYC NFT)
- Go to the Tier 1 KYC Dashboard and verify identity
- (Optional) Complete Tier 2 onboarding for partner banks
- Return to Demo page
- Successfully deposit ETH with KYC NFT
The platform interacts with two main contracts:
- NFT Contract - Mints KYC NFTs upon successful verification
- Vault Contract - Checks for KYC NFT ownership before allowing deposits
Update contract addresses in lib/contracts.ts and ensure ABIs match your deployed contracts.
The platform uses Reclaim Protocol for zero-knowledge proof verification. Update the integration in lib/reclaim.ts with your Reclaim Protocol SDK configuration.
# Run development server
pnpm dev
# Build for production
pnpm build
# Start production server
pnpm start
# Lint code
pnpm lintMIT