InkTix — Cross-Chain Ticket Marketplace
InkTix — Cross-Chain Ticket Marketplace
A production-deployed, full-stack decentralized application built for the Polkadot Alumni Hackathon. InkTix is a cross-chain ticket marketplace on Westend Asset Hub addressing scalping, fraud, and pricing opacity through on-chain enforcement. Rust 58.4%, TypeScript 35.7%.
Smart Contract Layer
The ink! 5.1.1 contract implements 52 message handlers across a unified InkTixStorage structure with 100+ mapping fields. Core capabilities:
- Dynamic pricing — 6-factor algorithm incorporating demand, time-to-event, seat classification, team performance, rivalry weight, and season pass status
- Anti-scalping enforcement — configurable purchase limits per wallet, transfer cooldowns, and a hard 1.5× resale price cap enforced at the contract level
- NFT ticket minting and verification — Blake2x256 hashes with QR code integration for on-chain ownership and authenticity
- Multi-currency payments — DOT, KSM, aUSD, ACA, and LDOT with on-chain exchange rates
- XCM cross-chain transfers —
limitedReserveTransferAssetsto destination parachains - Group purchasing — shared codes generating 5% discounts with adjacent seating allocation
- Domain-specific features — sports (teams, seasons, fantasy leagues) and concert (artist management) modules
Frontend and Integration
- Next.js 15.5, React 19.1, TypeScript 5.9, Zustand 5.0 with persistence middleware
- @polkadot/api 16.4 + @polkadot/api-contract 16.5 with Polkadot.js, Talisman, and SubWallet support
- Analytics dashboard — platform KPIs, revenue visualization, and demand heatmaps
- Docker Compose local dev environment with substrate-contracts-node
Testing and Quality
- 14 contract unit tests via
cargo test - 31 frontend unit tests (Vitest 3.2 + Testing Library 16.3)
- 3 Playwright 1.58 end-to-end specifications
- GitHub Actions CI/CD — contract tests + lint/build/test on every push
Live: inktix.com · inktix.rycsprojects.com | Source: github.com/RycBrownrigg/InkTix
Ready to start a conversation?
Let's talk.
Let's Talk Let's Talk Let's Talk Let's Talk Let's Talk Let's Talk Let's Talk Let's Talk Let's Talk Let's Talk Let's Talk Let's Talk