EventSeal is a decentralized application (dApp) that allows event organizers to create events, manage registrations, and distribute blockchain-verified attendance NFTs to participants. Built on Solana for fast and low-cost transactions.
Check out the live demo at: https://0xsoydev.xyz
- Create Events: Host events with all the details including NFT rewards for attendees
- Registration Management: Keep track of who has registered for your events
- Attendance Verification: Easily confirm attendance at your events
- NFT Minting: Automatically mint unique proof-of-attendance NFTs for verified attendees
- NFT Gallery: Users can view their collected NFTs in their profile
- Frontend: Next.js, React, TailwindCSS
- Blockchain: Solana (Web3.js, Wallet Adapter)
- Database: PostgreSQL with Prisma ORM
- Storage: IPFS (via Lighthouse)
- Deployment: Docker and Docker Compose
- Node.js 18+ and npm/yarn/pnpm
- PostgreSQL database
- Solana wallet with devnet SOL for NFT minting
- Docker and Docker Compose (for containerized deployment)
git clone https://github.com/yourusername/eventseal.git
cd eventseal/appnpm install
# or
yarn installCreate a .env.local file in the root directory with the following variables:
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/eventseal"
# Solana
SOLANA_NETWORK="devnet"
MINTER_PRIVATE_KEY="your_solana_wallet_private_key_for_minting"
# Lighthouse (IPFS)
LIGHTHOUSE_API_KEY="your_lighthouse_api_key"
npx prisma migrate devThis will create the necessary tables in your PostgreSQL database.
npm run dev
# or
yarn devVisit http://localhost:3000 to see the application.
For easy deployment, we provide Docker configuration files:
Edit the docker-compose.yml file to set your environment variables:
environment:
- DATABASE_URL=postgresql://postgres:postgres@db:5432/<your-db-name>
- NEXT_PUBLIC_LIGHTHOUSE_API_KEY=<your_lighthouse_api_key>
- MINTER_PRIVATE_KEY=<private_key_of_your_minter_wallet>And update the database settings:
environment:
- POSTGRES_USER=<db_username>
- POSTGRES_PASSWORD=<db_password>
- POSTGRES_DB=<your_db_name>docker-compose up -dThis will:
- Build the Next.js application
- Start a PostgreSQL database
- Run Prisma migrations automatically
- Make the application available on port 80
Visit http://your-server-ip to access the application.
Our official deployment is available at: https://0xsoydev.xyz
For NFT minting to work, you need a funded Solana wallet:
- Export your private key from a wallet like Phantom or Solflare
- Add it to your
.env.localfile asMINTER_PRIVATE_KEY(or to docker-compose.yml if using Docker) - Ensure this wallet has SOL on the devnet:
- Visit Solana Faucet
- Request devnet SOL to your wallet address
-
Create an Event:
- Connect your wallet
- Fill in event details and upload an image for the NFT
- Submit to create the event
-
Manage Registrations:
- Share your event page with participants
- View who has registered in your dashboard
-
Confirm Attendance:
- In the event dashboard, confirm attendees who were present
- This mints an NFT directly to their wallet
-
View NFTs:
- Users can view their NFT collection in their profile
This application interacts with Solana to:
- Mint unique NFTs for event attendees
- Store transaction signatures for verification
- Provide on-chain proof of attendance
The minting process uses your configured wallet (MINTER_PRIVATE_KEY) to pay for transaction fees.
- NFTs not appearing in profile: Click the "Refresh NFTs" button on the profile page
- Minting errors: Ensure your minting wallet has enough SOL
- Database connection issues: Double-check your DATABASE_URL and PostgreSQL setup
- Docker deployment issues: Check container logs with
docker-compose logs
- All NFT minting operations happen server-side through API routes
- Images are stored on IPFS via Lighthouse
- The Prisma schema defines the database structure
- Docker setup includes automatic database migrations at startup
Contributions are welcome! Please feel free to submit a Pull Request.