zkStamp is a privacy-preserving, gamified POAP issuance system built using Self Protocol (for Zero-Knowledge Proofs) and Celo (for blockchain transactions). Users verify their identity and location via NFC passport scans + GPS to earn POAPs (Proof of Attendance Protocol tokens).
- Privacy-First Identity Verification: Users scan their passports with the Self Protocol app to generate zero-knowledge proofs, sharing only what they choose to disclose.
- Real Geolocation Verification: Uses the browser's Geolocation API to determine the user's current country.
- POAP Minting: Generates unique digital collectibles (POAPs) for each verified country visit.
- Interactive World Map: Displays all collected POAPs on a world map, creating a digital passport of travels.
- Celo Blockchain Integration: POAPs are recorded on the Celo blockchain, providing verifiable proof of travel.
- React + Next.js: For UI and server-side rendering
- TailwindCSS: For styling
- RainbowKit: For wallet connectivity
- Wagmi: For blockchain interaction
- Self Protocol QR Code: For passport verification
- Next.js API Routes: For backend API endpoints
- Self Protocol Backend Verifier: For validating passport proofs
- Geolocation API: For determining user location
- Celo: For storing POAP tokens and transactions
- ERC-721: For POAP NFT implementation (simulated in this demo)
- Connect Wallet: User connects their cryptocurrency wallet via RainbowKit.
- Verify Identity: User scans their passport using the Self app (by scanning the QR code).
- Share Selected Information: User selects what passport information to disclose.
- Location Detection: The app detects the user's current country via GPS.
- Travel Verification: The backend verifies both the passport and location.
- POAP Minting: A unique POAP is minted on the Celo blockchain for the visited country.
- Collection View: User can view their collected POAPs on an interactive world map.
- Clone the repository:
git clone https://github.com/yourusername/stamper.git
cd stamper
- Install dependencies:
pnpm install
- Create a
.env.local
file with the following variables:
CELO_RPC_URL=https://forno.celo.org
SCOPE=stamper-travel-app
NEXT_PUBLIC_VERIFICATION_ENDPOINT=http://localhost:3000/api/verify
- Start the development server:
pnpm dev
- Open http://localhost:3000 to see the application.
To fully test the application, you need to download the Self Protocol app:
In this demo version:
- The passport scanning works with the actual Self Protocol app
- Real GPS coordinates are used, but blockchain transactions are simulated
- POAP minting is simulated rather than performed on-chain
- Self Protocol for the identity verification infrastructure
- Celo for the blockchain platform
- RainbowKit for wallet connection