A decentralized event ticketing platform built on Base blockchain with WalletConnect integration.
This project provides a complete scaffold for building an event ticketing platform where:
- Event organizers can create events and mint NFT tickets
- Users can purchase tickets using cryptocurrency on Base network
- Tickets are represented as NFTs for authenticity and transferability
- Secondary marketplace for ticket resales
- WalletConnect integration for seamless wallet connectivity
base-event-ticketing-platform/
├── apps/
│ └── web/ # Next.js frontend application
│ ├── src/
│ │ ├── app/ # Next.js app directory
│ │ ├── components/ # React components
│ │ ├── hooks/ # Custom hooks
│ │ ├── lib/ # Library code
│ │ ├── types/ # TypeScript types
│ │ └── utils/ # Utility functions
│ └── public/ # Static assets
├── packages/
│ ├── contracts/ # Smart contracts (Hardhat)
│ │ ├── contracts/ # Solidity contracts
│ │ ├── scripts/ # Deployment scripts
│ │ ├── test/ # Contract tests
│ │ └── deploy/ # Deployment configs
│ └── wallet/ # WalletConnect configuration
│ └── src/ # Wallet utilities and hooks
└── docs/ # Documentation (TODO)
- Base - Ethereum L2 for low-cost transactions
- Solidity - Smart contract development
- Hardhat - Smart contract development framework
- OpenZeppelin - Secure smart contract libraries
- Next.js 14 - React framework with app directory
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- WalletConnect - Wallet connection
- Wagmi - React hooks for Ethereum
- Viem - TypeScript library for Ethereum
- Turbo - Monorepo build system
- IPFS - Decentralized metadata storage
- Node.js >= 18.0.0
- npm >= 9.0.0
- A WalletConnect Project ID (Get one here)
- Clone the repository:
git clone <repository-url>
cd base-event-ticketing-platform- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env
# Edit .env and add your configurationRequired environment variables:
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID- Your WalletConnect project IDBASE_RPC_URL- Base mainnet RPC URLBASE_TESTNET_RPC_URL- Base Sepolia testnet RPC URLDEPLOYER_PRIVATE_KEY- Private key for contract deployment (testnet only!)
Start the development server:
npm run devThe frontend will be available at http://localhost:3000
npm run contracts:compilenpm run contracts:testnpm run contracts:deployThis is a scaffold project. Here's what needs to be implemented:
- Event creation and management logic
- NFT ticket minting with metadata
- Ticket validation system
- Access control for event organizers
- Marketplace for ticket resales
- Royalty/fee distribution
- Refund mechanisms
- Comprehensive test coverage
- WalletConnect integration
- Wallet connection UI
- Event browsing interface
- Ticket purchasing flow
- User dashboard (my tickets)
- Organizer dashboard (create events, manage sales)
- Ticket validation UI (QR codes)
- Marketplace interface
- IPFS integration for metadata
- IPFS pinning service setup
- Event indexing (The Graph or similar)
- Email notifications
- Analytics dashboard
- EventFactory.sol - Factory contract for creating and managing events
- EventTicketing.sol - Main NFT contract for tickets
- TicketMarketplace.sol - Secondary marketplace for resales
- App Router - Next.js 14 app directory structure
- Component-based - Reusable React components
- Custom Hooks - For contract interactions and wallet management
- Type-safe - Full TypeScript coverage
See CONTRIBUTING.md for guidelines on how to contribute to this project.
This is a scaffold project and has not been audited. Before deploying to mainnet:
- Complete security audit of smart contracts
- Implement comprehensive testing
- Add circuit breakers and pause mechanisms
- Review all access controls
- Test on testnet extensively
MIT
- Base Documentation
- WalletConnect Docs
- Wagmi Documentation
- Hardhat Documentation
- OpenZeppelin Contracts
For questions and support, please open an issue in the repository.