Real-time analytics and monitoring dashboard for the Stacks ecosystem
stkpulse is a comprehensive real-time analytics platform for the Stacks blockchain ecosystem. Track on-chain metrics, monitor smart contracts, analyze DeFi protocols, and gain deep insights into the Bitcoin L2 economy — all in one place.
From individual traders to protocol teams, stkpulse provides the data infrastructure needed to make informed decisions on Stacks.
- Live Chain Metrics — block time, TPS, mempool depth, fee estimates updated every block
- DeFi Dashboard — TVL, volume, and liquidity across all Stacks DeFi protocols
- Contract Monitor — track any Clarity contract's calls, state changes, and revenue
- STX & sBTC Analytics — price, stacking rate, circulating supply, peg health
- Wallet Portfolio — track your STX, sBTC, and SIP-010 token holdings with PnL
- NFT Market Data — floor prices, volume, sales history across Stacks marketplaces
- Stacking Analytics — current cycle stats, pool rankings, BTC yield estimates
- Real-time Alerts — WebSocket-powered alerts for on-chain events with webhook, email, and in-app delivery
- Custom Alerts — webhook and email alerts for on-chain events you define
- Developer API — REST and WebSocket API for integrating stkpulse data
- Historical Data — full historical export for any metric in CSV or JSON
| Layer | Technology |
|---|---|
| Frontend | Next.js 14 (App Router) + TypeScript |
| Charting | Recharts + D3.js |
| Realtime | WebSocket (Hiro API) |
| Data Layer | PostgreSQL + TimescaleDB |
| Cache | Redis |
| Backend | Node.js + Fastify |
| Indexer | Custom Stacks event indexer |
| APIs | Hiro Platform API, Stacks API |
| Deployment | Docker + Railway / Vercel |
stkpulse/
├── apps/
│ ├── web/ # Next.js frontend
│ │ ├── app/
│ │ │ ├── dashboard/ # Main analytics dashboard
│ │ │ ├── contracts/ # Contract explorer
│ │ │ ├── defi/ # DeFi protocol analytics
│ │ │ ├── nfts/ # NFT market data
│ │ │ ├── stacking/ # Stacking analytics
│ │ │ ├── portfolio/ # Wallet portfolio
│ │ │ └── api-docs/ # Developer API docs
│ │ └── components/
│ │ ├── charts/
│ │ ├── metrics/
│ │ └── alerts/
│ └── api/ # Fastify API server
│ ├── routes/
│ ├── services/
│ └── websocket/
├── packages/
│ ├── indexer/ # Stacks blockchain indexer
│ │ ├── block-processor.ts
│ │ ├── contract-events.ts
│ │ └── token-transfers.ts
│ ├── db/ # Database schemas + migrations
│ └── shared/ # Shared types and utilities
├── docker-compose.yml
└── .env.example
Block Height │ ████████████░░ 212,847
Avg Block Time │ 9.8 seconds
Mempool Txns │ 143
Network TPS │ 12.4
Fee (low) │ 0.001 STX
Fee (high) │ 0.05 STX
| Protocol | TVL | 24h Volume | Change |
|---|---|---|---|
| ALEX | $42.1M | $3.2M | +5.4% |
| Bitflow | $18.7M | $1.1M | -2.1% |
| Velar | $9.4M | $0.8M | +12.3% |
Cycle #82
├── Cycle Start Block: 840,000
├── Cycle End Block: 842,100
├── Total STX Stacked: 1.24B STX (62% of circulating)
├── Minimum Threshold: 90,000 STX
├── BTC Committed: 148.2 BTC
└── Est. APY: 8.3%
- Node.js >= 18
- Docker + Docker Compose
- Hiro Platform API Key (free tier available)
git clone https://github.com/thewealthyplace/stkpulse
cd stkpulse
cp .env.example .env
# Fill in your HIRO_API_KEY and other configdocker-compose up -dThis starts:
- PostgreSQL + TimescaleDB on port 5432
- Redis on port 6379
- API server on port 3001
- Indexer (background process)
- Frontend on port 3000
# Install dependencies
npm install
# Setup database
npm run db:migrate
npm run db:seed # loads last 30 days of historical data
# Start indexer
npm run indexer:start
# Start API
npm run api:dev
# Start frontend
npm run web:devOpen http://localhost:3000.
All endpoints are prefixed with /api/v1.
GET /api/v1/chain/stats
GET /api/v1/chain/blocks?limit=10
GET /api/v1/chain/mempool
GET /api/v1/tokens # List all SIP-010 tokens
GET /api/v1/tokens/:contract/price # Token price history
GET /api/v1/tokens/:contract/holders # Token holder distribution
GET /api/v1/stacking/current-cycle
GET /api/v1/stacking/cycles?limit=30
GET /api/v1/stacking/pools
GET /api/v1/contracts/:address # Contract metadata
GET /api/v1/contracts/:address/calls # Recent function calls
GET /api/v1/contracts/:address/events # Contract events
ws://localhost:3001/ws
# Subscribe to events
{ "action": "subscribe", "channel": "blocks" }
{ "action": "subscribe", "channel": "contract", "address": "SP..." }
{ "action": "subscribe", "channel": "token", "contract": "SP..." }
// Create an alert via API
POST /api/v1/alerts
{
"name": "Large STX Transfer",
"condition": {
"type": "token_transfer",
"token": "STX",
"amount_gte": 1000000 // 1M STX
},
"notify": {
"webhook": "https://your-webhook.com/alerts",
"email": "you@example.com"
}
}# Stacks API
HIRO_API_KEY=your_key_here
STACKS_NETWORK=mainnet # mainnet | testnet
# Database
DATABASE_URL=postgresql://user:pass@localhost:5432/stkpulse
REDIS_URL=redis://localhost:6379
# App
NEXT_PUBLIC_API_URL=http://localhost:3001
ALERT_WEBHOOK_SECRET=your_secret_here- Real-time chain metrics
- DeFi TVL and volume tracking
- Stacking cycle analytics
- REST and WebSocket API
- WebSocket-powered alert system with 6 alert types
- Webhook delivery with exponential backoff retry
- Email and in-app notifications via SSE
- NFT floor price aggregator
- Wallet PnL tracker
- Mobile app (React Native)
- AI-powered anomaly detection
- Public embeddable chart widgets
- Developer SDK (stkpulse-js)
git clone https://github.com/thewealthyplace/stkpulse
cd stkpulse
npm install
docker-compose up -d postgres redis
npm run db:migrate
npm run web:devMIT © thewealthyplace