Seamless Web2 fiat onboarding meets true Web3 digital asset ownership for event ticketing, powered by Stellar & Soroban.
EventLink is a hybrid Web2 + Web3 event ticketing infrastructure engineered to eliminate ticket fraud, secondary market scalping, and Web3 onboarding friction. By combining mainstream payment processing (Stripe and Flutterwave) with Stellar Soroban smart contracts, EventLink allows everyday attendees to purchase event tickets using credit cards or mobile money without needing prior cryptocurrency knowledge.
Upon purchase, the system automatically mints a non-custodial digital ticket asset on the Stellar ledger, generates an offline-resilient QR code, and establishes a claimable balance. Attendees can optionally connect a Freighter, Albedo, xBull, or Lobstr wallet at any time to claim full self-custody over their on-chain ticket passes and post-event Proof-of-Attendance NFTs (POAPs).
- Deployed EventLink Project: https://event-link-soroban.vercel.app/
- Blockchain Network: Stellar Testnet
- Deployed Soroban Smart Contract ID:
CDD3VJENDGV6LLOY2OCYQSRD5CQKYAPL4I3MNWFFQBXJ6P6KOJHQK47J - StellarExpert Explorer: View Live Contract Details
- Primary Wallet Integration: Freighter Browser Extension (
@stellar/freighter-api) + Albedo Web Signer
Traditional event ticketing platforms suffer from severe structural failures that cost event organizers and attendees billions annually:
- Ticket Fraud & Counterfeiting: Static PDF tickets and static QR code screenshots are easily duplicated, resold, and spoofed, leading to gate entry conflicts and financial losses.
- Unregulated Scalping & Exploitative Secondary Markets: Scalpers buy tickets in bulk using bots and resell them at 300%β500% markups without returning any revenue or royalties to original event creators.
- Lack of True Asset Ownership: Users do not own their tickets; centralized platforms lock passes inside proprietary apps, erase tickets post-event, and prevent seamless peer-to-peer transfers.
- High Web3 Friction: Existing decentralized ticketing applications require attendees to understand gas fees, seed phrases, network switches, and crypto wallets before buying a single ticket.
EventLink solves these friction points through a progressive onboarding architecture:
- Invisible Web2 Onboarding: Users buy tickets in USD or NGN using credit cards, Apple Pay, Google Pay, or Mobile Money via Stripe & Flutterwave.
- Automated Soroban Minting: Backend webhooks instantly trigger Soroban smart contract functions to mint verifiable ticket passes on Stellar.
- Self-Custody on Demand: Non-crypto users receive instantaneous QR code tickets via web and email. Web3-native users can connect Freighter to claim asset ownership into self-custody.
- Cryptographic Gatekeeper Scanner: Organizers scan HMAC-SHA256 signed dynamic QR codes, preventing double-entry and verifying ledger state in real time (with an offline fallback engine).
- Post-Event Proof-of-Attendance (POAP): Gate check-in converts the ticket pass into a digital collectible POAP, rewarding attendees with on-chain LINK tokens and event vouchers.
- Multi-Gateway Fiat Payments: Seamless checkout powered by Stripe (USD) and Flutterwave (NGN/GHS/KES).
- Stellar Soroban Smart Contracts: Custom Rust contract handling ticket creation, inventory tracking, ownership claims, and check-in status.
- Native Freighter & Web3 Wallet Support: Real browser extension interaction for wallet signature verification and asset claiming.
- Offline-Capable Scanner Terminal: Gatekeeper scanner operates online via REST API or offline using cryptographic payload verification.
- Post-Event Attendance Rewards: Automatic issuance of POAP NFTs, 150 LINK reward tokens, and 20% discount vouchers upon check-in.
- Secret Organizer Admin Portal (
/admin): Dashboard for event publishing, live sales telemetry, analytics, and gate scanner controls.
βββββββββββββββ 1. Purchase Ticket βββββββββββββββββββ 2. Process Fiat βββββββββββββββββββββββ
β Attendee β ββββββββββββββββββββββββββ> β EventLink β ββββββββββββββββββββββββ> β Stripe / Flutterwaveβ
βββββββββββββββ β Frontend β βββββββββββββββββββββββ
β βββββββββββββββββββ β
β β 3. Webhook Signal
β βΌ
β 6. View QR / Claim Wallet βββββββββββββββββββ 5. Save Metadata βββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββ β MongoDB Databaseβ <ββββββββββββββββββββββββ β Node.js Backend β
βββββββββββββββββββ βββββββββββββββββββββββ
β
β 4. Execute Mint
βΌ
βββββββββββββββ 7. Gatekeeper QR Scan βββββββββββββββββββββββ
β Event Staff β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ> β Stellar Network β
βββββββββββββββ βββββββββββββββββββββββ
- Browse & Select: Attendee chooses an event and ticket tier on the EventLink UI.
- Fiat Checkout: Attendee pays via Stripe or Flutterwave without needing a crypto wallet.
- Webhook Processing: Payment gateway notifies Node.js backend of successful payment.
- Soroban Contract Minting: Backend interacts with Soroban contract
CDD3...JHQK47Jto mint the ticket asset and set up claim balances. - QR & Pass Generation: An HMAC-SHA256 signed QR code is generated, stored in MongoDB, and delivered via email.
- Wallet Claiming (Optional): Attendee can connect Freighter wallet to transfer the Soroban asset directly to their public key (
G...). - Gate Verification: Event staff scan the QR code at venue entry. The system validates the signature, marks the ticket scanned on-chain, and issues POAP rewards.
- Frontend: React 18, TypeScript, Vite, Glassmorphism CSS,
@stellar/freighter-api, Lucide Icons. - Backend: Node.js, Express, TypeScript, Mongoose ODM, JWT Authentication.
- Database: MongoDB Atlas (Cluster
event-link.dmfso1e.mongodb.net). - Blockchain Layer: Stellar Testnet, Soroban Rust Smart Contracts,
@stellar/stellar-sdk. - Payment Gateways: Stripe API, Flutterwave Webhooks.
| Domain | Technology |
|---|---|
| Smart Contracts | Rust, Soroban SDK, Stellar CLI |
| Blockchain Client | @stellar/stellar-sdk, Soroban RPC |
| Frontend | React 18, Vite, TypeScript, Framer Motion |
| Styling | Vanilla CSS (Dark Neon Glassmorphism) |
| Backend API | Node.js, Express, TypeScript, tsx |
| Database | MongoDB Atlas, Mongoose |
| Payments | Stripe API, Flutterwave Node SDK |
| Wallets | Freighter API, Albedo, xBull, Lobstr |
- Dark Obsidian Aesthetics: Deep dark theme (
#0b0d17) with vibrant neon cyan (#00f2fe) and ultraviolet (#7000ff) gradients. - Glassmorphism: Translucent panels with background blur effects (
backdrop-filter: blur(16px)). - Interactive Ticket Cards: 3D hover effects, dynamic badge status indicators, and smooth flip animations showing QR credentials.
- Responsive Dashboard: Sleek navigation for viewing active passes, claimed Web3 collectibles, and check-in rewards.
Figure 1: EventLink landing page displaying featured events and search filters.
Figure 2: Fiat payment modal supporting Stripe card payments and Flutterwave local options.
Figure 3: User dashboard showing interactive ticket passes, QR codes, and Freighter claim controls.
Figure 4: Automated email delivery containing digital ticket credentials and claim links.
# Server Config
PORT=3001
NODE_ENV=development
JWT_SECRET=your_jwt_secret_key_min_32_chars
# Database
MONGODB_URI=mongodb+srv://<user>:<password>@cluster.mongodb.net/eventlink
# Payments
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
FLUTTERWAVE_PUBLIC_KEY=FLWPUBK_TEST-...
FLUTTERWAVE_SECRET_KEY=FLWSECK_TEST-...
FLUTTERWAVE_SECRET_HASH=flw_sec_hash_...
# Stellar & Soroban
STELLAR_NETWORK=TESTNET
STELLAR_HORIZON_URL=https://horizon-testnet.stellar.org
SOROBAN_RPC_URL=https://soroban-testnet.stellar.org
SOROBAN_CONTRACT_ID=CDD3VJENDGV6LLOY2OCYQSRD5CQKYAPL4I3MNWFFQBXJ6P6KOJHQK47Jgit clone https://github.com/Japheth-Adamu/event-link.git
cd event-linknpm installcp .env.example .env
# Update .env with your database and API credentialsnpx tsx server/index.tsIn a separate terminal:
npm run devVisit http://localhost:5179 in your browser.
- Frontend: Deployed via Vercel with Vite build environment.
- Backend: Deployed via Render or Railway.
- Database: Hosted on MongoDB Atlas.
- SSL / Domain: Production requires HTTPS for WebCrypto APIs, payment webhooks, and Freighter wallet interactions.
EventLink natively interfaces with the Freighter Wallet browser extension:
import { isConnected, getPublicKey, signTransaction } from "@stellar/freighter-api";
export async function claimTicketToFreighter(xdr) {
if (!(await isConnected())) {
throw new Error("Freighter wallet is not installed.");
}
const userPublicKey = await getPublicKey();
const signedXdr = await signTransaction(xdr, { network: "TESTNET" });
return signedXdr;
}- HMAC Signature Verification: Stripe and Flutterwave webhooks are validated using cryptographic secret hashes before processing orders.
- Secret Key Isolation: Blockchain issuer keys and database credentials are preserved strictly on server-side environment configurations.
- Dynamic Signed QR Payload: Gate scanner payloads use HMAC SHA-256 signatures with nonce timestamps to block screenshot replay attacks.
- Smart Contract P2P Ticket Resale: Peer-to-peer secondary ticket marketplace with capped resale prices and forced creator royalties.
- Dynamic Tier Pricing: Automated algorithmic tier price adjustments based on sales velocity and demand.
- Cross-Chain Bridge Support: Interoperability extensions connecting Stellar assets with EVM networks.
Distributed under the MIT License. See LICENSE for details.
