Mintix — NFT Ticketing
Blockchain / Web3NFT tickets on Solana
Each ticket is minted as an SPL token (decimals 0, supply 1) via an Anchor program — a true, unique on-chain asset.
One-time QR check-in
The use_ticket instruction flips an on-chain used flag, so a scanned ticket can't be reused — verified against the blockchain.
Verifiable ownership
Ownership lives on-chain against the buyer's wallet. A UseTicket constraint enforces that only the ticket owner can redeem it.
Secondary market
Tickets can be listed for resale with full transfer history and previous-owner tracking, guarded by a unique seat-per-concert index.
Project Overview
Mintix is a Web3 concert-ticketing platform built as my final thesis, tackling a real problem in event ticketing: fraud, duplicate tickets, and untraceable resale. Each ticket is minted as an NFT on the Solana blockchain through a custom Anchor smart contract, giving every ticket verifiable, tamper-proof ownership. Attendees connect a Phantom wallet, hold their ticket as a real on-chain asset, and check in via a QR code that can only be redeemed once. Organizers manage concerts through an approval workflow, and a secondary market lets tickets be resold with a full, auditable transfer history.
On-chain Program
The concert_nft_tickets Anchor program exposes six instructions. Minting issues an SPL token with decimals 0 and supply 1 — the on-chain definition of a non-fungible ticket. Redemption, authority, and sold-out rules are all enforced on-chain.
initialize_concert()Create a concert with name, venue, date, and total ticket supply.
initialize_mint()Set up the SPL mint (decimals 0) and token account for an NFT ticket.
create_ticket()Mint one NFT ticket, enforce sold-out limits with checked math, and store ticket data.
use_ticket()Redeem a ticket once — sets the on-chain used flag; owner-only via constraint.
update_concert()Edit concert details; owner or global admin only, can't shrink below tickets sold.
delete_concert()Close a concert account and reclaim rent; owner or global admin only.
Technical Implementation
Smart contract. Written in Rust with the Anchor framework (0.28). Uses anchor-spl to mint NFT tickets, checked arithmetic to guard against overflow, and account constraints so only a ticket's owner can redeem it and only a concert's authority (or global admin) can edit or delete it.
Frontend. React with the Solana Wallet Adapter (including mobile wallet adapter) for Phantom connectivity, @solana/web3.js for transactions, qrcode.react for ticket QR codes, and Socket.io for realtime updates.
Backend. Express 5 API backed by MongoDB via Mongoose, with JWT + bcrypt authentication. Models cover the concert approval workflow, ticket lifecycle, and a secondary market — a unique seat-per-concert index prevents duplicate seats, and full transaction history tracks every mint, transfer, and resale.