On-chain merchant rewards and NFTs inside a Telegram Mini-App on Rootstock.
A fully on-chain reward and loyalty platform running inside a Telegram Mini-App, built on Rootstock. Merchants can create reward campaigns (like Free Coffee or Store Credit), which generate NFT rewards hosted via Pinarkive. Users simply open the Mini-App in Telegram, enter a reward code (e.g., GIFT01), automatically receive a wallet, get a small RBTC gas subsidy, and instantly claim the NFT. When they redeem the reward, the merchant confirms it, and the NFT is burned on-chain to prevent reuse.
The project removes all Web3 complexity: no extensions, no seed phrases, no dApps. Everything works natively inside Telegram. The entire flow — wallet creation, gas funding, NFT minting, and burning — is live and working on Rootstock mainnet, after testnet limitations forced a mid-hackathon migration. Future integrations include x402 payments, RIF staking rewards, and rENS-based identity.
The Mini-App is built using the official Telegram Vite boilerplate, written in TypeScript + React, and communicates with a custom backend through REST endpoints. All smart contracts (ERC-721 reward NFTs) are deployed on Rootstock mainnet via Hardhat, with metadata stored using Pinarkive’s SDK for permanent hosting.
When a user opens the Mini-App, the backend creates an encrypted EOA wallet for them, funds it with a minimal RBTC amount using a sponsor wallet, and mints the reward NFT to that address. Redeeming triggers an on-chain burn() transaction, ensuring each reward can only be used once.
The backend manages:
Wallet generation + encryption
Gas sponsorship
NFT minting and burning
Reward-code validation
Pinarkive metadata uploads
Frontend, backend, and contracts are structured so judges can clone the repo, add .env values, run each service locally, and replicate the full reward flow.

