A whimsical blockchain analytics tool
This project uses pnpm workspaces to manage multiple packages:
@bitsplorer/nextjs- Next.js frontend application@bitsplorer/hardhat- Hardhat smart contract development environment
- Node.js 22.x (pinned by
engines.nodeand.nvmrc) - pnpm 10.5.2 (pinned by
packageManager)
# Install all dependencies for all packages
pnpm install# Run development server
pnpm dev
# Build for production
pnpm build
# Start production server
pnpm start
# Run linter
pnpm lint# Compile smart contracts
pnpm hardhat:compile
# Run tests
pnpm hardhat:test
# Start local Hardhat node
pnpm hardhat:node# Clean all node_modules
pnpm clean
# Reinstall all dependencies
pnpm install:all# Run command in nextjs package
pnpm --filter @bitsplorer/nextjs <command>
# Run command in hardhat package
pnpm --filter @bitsplorer/hardhat <command># Add to nextjs package
pnpm --filter @bitsplorer/nextjs add <package-name>
# Add to hardhat package
pnpm --filter @bitsplorer/hardhat add -D <package-name>bitsplorer/
├── packages/
│ ├── nextjs/ # Next.js frontend app
│ │ ├── app/ # Next.js app directory
│ │ ├── public/ # Static assets
│ │ └── package.json
│ └── hardhat/ # Hardhat development
│ ├── contracts/ # Solidity contracts
│ ├── test/ # Contract tests
│ ├── scripts/ # Deployment scripts
│ └── package.json
├── pnpm-workspace.yaml
└── package.json
See DEPLOY.md for the Vercel runbook. Note that the app needs an
Ethereum RPC endpoint per chain (RPC_URL_MAINNET, RPC_URL_SEPOLIA,
RPC_URL_BASE) — see packages/nextjs/.env.example.
Without them it falls back to viem's public defaults, most of which are dead or
rate-limited.