A real-time NFT holder analytics dashboard for HyperEVM blockchain. Track NFT holders, monitor growth metrics, and analyze ownership distribution with blockchain data synced via Etherscan API V2.
- Real-time Holder Tracking: Monitor all NFT holders and their token counts
- Growth Analytics: Track new holders daily, weekly, and monthly
- Historical Snapshots: View holder growth trends over time
- Complete Coverage: 100% token ownership tracking (5,389+ tokens)
- Top Holders: Identify largest NFT holders with percentage breakdown
- Fast Sync: Complete blockchain sync in ~45 seconds
- API-First: RESTful API endpoints for easy integration
Production: https://my-nextjs-app-lilac-tau.vercel.app
- Framework: Next.js 16 with App Router
- Database: Neon PostgreSQL (Serverless)
- ORM: Prisma
- Blockchain API: Etherscan API V2 for HyperEVM (chainid=999)
- Deployment: Vercel
- Language: TypeScript
- Styling: Tailwind CSS
Get current holder statistics and top holders.
Response:
{
"success": true,
"totalSupply": 5389,
"totalHolders": 2801,
"transactionsInDatabase": 13733,
"tokensTracked": 5389,
"coverage": "100.00%",
"topHolders": [
{
"address": "0x91d2127bafb11062eed0176d991fe7f2eb60db8f",
"count": 110,
"percentage": "2.04%"
}
],
"lastSync": "2025-10-29T11:04:55.353Z"
}Get holder growth metrics and historical data.
Response:
{
"success": true,
"current": {
"totalHolders": 2801,
"totalSupply": 5389,
"uniqueTokensTracked": 5389,
"coverage": "100.00%",
"timestamp": "2025-10-29T11:04:49.973Z"
},
"growth": {
"last24Hours": {
"newHolders": 42,
"holderChange": 5,
"percentageChange": "0.18%"
},
"last7Days": {
"newHolders": 156,
"holderChange": 23,
"percentageChange": "0.83%"
},
"last30Days": {
"newHolders": 312,
"holderChange": 78,
"percentageChange": "2.86%"
}
},
"history": [...]
}Trigger blockchain data synchronization.
Response:
{
"success": true,
"message": "Sync completed successfully!",
"stats": {
"totalSupply": 5389,
"transactionsProcessed": 13733,
"tokensTracked": 5389,
"uniqueHolders": 2801,
"coverage": "100.00%"
}
}Test Etherscan API connection and endpoints.
- Transaction: All NFT transfer transactions
- Holder: Current holder statistics
- TokenOwnership: Current ownership mapping (tokenId → owner)
- HolderSnapshot: Historical snapshots for analytics
- HolderHistory: First/last seen timestamps for each holder
- Statistics: System metadata (last sync time, total supply, etc.)
- Node.js 18+
- PostgreSQL database (we recommend Neon)
- Etherscan API key
- Clone the repository:
git clone https://github.com/manfromhellxbt/hypio-dashboard.git
cd hypio-dashboard/my-nextjs-app- Install dependencies:
npm install- Set up environment variables:
Create .env.local file:
# Etherscan API
ETHERSCAN_API_KEY=your_api_key_here
# Neon Database
POSTGRES_PRISMA_URL=your_database_url_here
POSTGRES_URL_NON_POOLING=your_direct_database_url_here- Run database migrations:
npx prisma migrate deploy
npx prisma generate- Run the development server:
npm run dev- Initial data sync:
curl -X POST http://localhost:3000/api/syncOpen http://localhost:3000 to view the app.
The contract address is configured in src/app/api/sync/route.ts:
const contractAddress = '0x63eb9d77D083cA10C304E28d5191321977fd0Bfb';To track a different NFT contract, update this address.
Currently configured for HyperEVM (chainid=999). To change networks, update the chainid parameter in API calls:
const baseUrl = 'https://api.etherscan.io/v2/api';
// Change chainid=999 to your network's chain ID- Batch Inserts: 1,000 records per batch for fast database writes
- Block Range Pagination: Bypasses Etherscan's 10,000 record limit
- Indexed Queries: Database indexes on frequently queried fields
- Serverless Database: Auto-scaling with Neon PostgreSQL
- Edge Deployment: Vercel edge network for low latency
Run /api/sync regularly to keep data up-to-date:
- Hourly: For active NFT collections
- Daily: For moderate activity
- Weekly: For low activity collections
You can set up Vercel Cron Jobs or use external cron services.
View and manage data with Prisma Studio:
npx prisma studiosrc/
├── app/
│ ├── api/
│ │ ├── holders/ # GET holder statistics
│ │ ├── stats/ # GET growth metrics
│ │ ├── sync/ # POST sync blockchain data
│ │ └── test/ # GET test API connection
│ └── page.tsx # Homepage
├── lib/
│ └── prisma.ts # Prisma client singleton
prisma/
├── schema.prisma # Database schema
└── migrations/ # Database migrations
Contributions are welcome! Please open an issue or submit a pull request.
MIT License - feel free to use this project for any purpose.
- Built with Next.js
- Blockchain data from Etherscan API
- Database powered by Neon
- Deployed on Vercel
Built by: @manfromhellxbt