Decentralized Event Ticketing App
EventChain is a blockchain-based event ticketing platform that leverages NFTs, smart contracts, and a mobile-first architecture to eliminate ticket fraud, ensure transparent ownership, and enable secure event entry verification.
EventChain is a decentralized event ticketing system where event tickets are issued as ERC-721 NFTs on the Polygon blockchain. Each ticket is uniquely owned, verifiable on-chain, and protected from duplication or manipulation.
- Eliminate ticket fraud and duplication
- Provide transparent, on-chain ticket ownership
- Enable secure peer-to-peer ticket transfers
- Ensure trustless event entry verification
- Reduce reliance on centralized ticketing platforms
- Blockchain-backed NFT tickets (ERC-721)
- Flutter-based mobile application
- Firebase-powered authentication and off-chain storage
- QR-code based ticket validation
- Organizer dashboard and entry scanner
- IPFS-based NFT metadata storage
- Windows / macOS / Linux
- Git
- Android Studio or VS Code
- Flutter SDK: ^3.27.0
- Dart SDK: 3.6.0 (bundled with Flutter 3.27.x)
- Compile SDK Version: API level 35 (Android 15 - recommended)
- Target SDK Version: API level 35 (Android 15 - recommended)
- Android Studio: Flamingo or later
- Java Development Kit (JDK): 17 (recommended) or 21
- Firebase Authentication: Latest
- Cloud Firestore: Latest
- Blockchain Network: Polygon PoS (Mumbai Testnet)
- Smart Contract Language: Solidity ^0.8.20
- Token Standard: ERC-721
- Node.js: 18.x LTS
- Hardhat: ^2.19 (2.19.1 - recommended)
- ethers.js: ^6.x (6.0.0 - recommended)
- Decentralized Storage -IPFS (Pinata): Latest
flutter_riverpod: ^2.5.1- https://pub.dev/packages/flutter_riverpod
firebase_core: ^3.6.0- https://pub.dev/packages/firebase_core
cloud_firestore: ^5.4.0- https://pub.dev/packages/cloud_firestore
go_router: ^14.2.0- https://pub.dev/packages/go_router
-
Download Flutter SDK
https://docs.flutter.dev/get-started/install -
Extract the SDK and add Flutter to PATH
export PATH="$PATH:`pwd`/flutter/bin"
-
Verify Flutter installation
flutter doctor
-
Install required platform tools
- Android Studio (Android SDK + Emulator)
- Xcode (macOS users for iOS)
-
Accept Android licenses
flutter doctor --android-licenses
Once all checks pass, Flutter is ready to use.
| Layer | Technology |
|---|---|
| Mobile App | Flutter |
| Language | Dart |
| Authentication | Firebase Authentication |
| Off-chain Database | Firebase Firestore |
| Blockchain Network | Polygon |
| Smart Contracts | Solidity (ERC-721) |
| Blockchain Dev | Hardhat |
| Blockchain Interaction | ethers.js (flutter_ether) |
| NFT Metadata | IPFS (Pinata) |
lib/
├── main.dart
├── app.dart
├── models/
│ ├── user.dart
│ ├── event.dart
│ └── ticket.dart
├── screens/
│ ├── auth/
│ ├── home/
│ ├── event/
│ ├── tickets/
│ ├── profile/
│ └── scanner/
├── services/
│ ├── firebase_service.dart
│ ├── blockchain_service.dart
│ └── ipfs_service.dart
├── providers/
└── utils/
contracts/
├── EventTicket.sol
scripts/
├── deploy.js
test/
├── EventTicket.test.js
- Create a Firebase project
- Enable Firebase Authentication
- Enable Firestore Database
- Download google-services.json / GoogleService-Info.plist
- Configure Firebase in Flutter
- Initialize Firebase in main.dart
Firebase is used only for:
- User authentication
- Event listings and metadata
- Wallet-to-user mappings
Ticket ownership and validation are handled only on-chain.
-
Install dependencies
npm install
-
Compile smart contracts
npx hardhat compile
-
Deploy contracts to Polygon (Testnet/Mainnet)
npx hardhat run scripts/deploy.js --network polygonMumbai
-
Save deployed contract address in Flutter configuration
flutter pub get
flutter run
We welcome contributions from developers, designers, and blockchain enthusiasts.
Before contributing, please read the official contribution documents to ensure a smooth review process:
- 📘 Contribution Guide: CONTRIBUTING.md
- 📄 Pull Request Template: PULL_REQUEST_TEMPLATE.md
These documents explain:
- Coding standards and best practices
- Branching and commit message conventions
- Testing and documentation requirements
- Pull request submission and review process
-
Fork the repository
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes following the guidelines in CONTRIBUTING.md
-
Commit your changes with clear and meaningful messages
-
Push the branch to your fork
-
Open a Pull Request using the provided PR template
⚠️ Pull requests that do not follow the contribution guidelines or the PULL REQUEST template may be requested for changes or closed.
- UI/UX enhancements
- Smart contract optimization
- Security audits
- QR validation improvements
- Wallet integrations
- Analytics and reporting tools
This project is licensed under the MIT License.
For project-related queries or issues, please reach out via Discord.
- Use the designated Discord channels for discussions and support
- Avoid unnecessary direct messages (DMs) and random pings
EventChain — Redefining Event Ticketing with Blockchain.