An Ethereum EIP-4844 blob data analytics dashboard for visualizing and analyzing blob transactions, costs, and L2 usage patterns.
- Real-time blob metrics tracking (base fees, pending blobs, cost comparisons)
- Interactive data visualization with time-based filtering (24h, 7d, 30d, All)
- L2 attribution tracking (Arbitrum, Optimism, Base, zkSync)
- Latest blocks table with detailed blob information
- Top blob users analysis and detailed user metrics
- Network selection (Mainnet, Sepolia)
- Responsive design with mobile navigation
- Keyboard shortcuts for search (/)
- Interactive search modal with comprehensive filtering options
-
Clone the repository
git clone https://github.com/yourusername/blob-flow.git cd blob-flow -
Install dependencies
npm install -
Run the development server
npm run dev -
Open http://localhost:3000 in your browser
This project uses Vitest with a CI-enforced 90% line coverage minimum for core logic.
npm run test- run testsnpm run test-coverage- run tests with coverage reportmake test-coverage- run coverage and enforce the threshold locally
GitHub Actions workflows are configured for:
CI(.github/workflows/ci.yml): lint, typecheck, test coverage enforcement, and production build checks on PRs and pushes tomain/masterPR Title(.github/workflows/pr-title.yml): enforces conventional commit style PR titlesSecrets Scan(.github/workflows/secrets-scan.yml): gitleaks checks on PR/push, weekly schedule, and manual dispatch
blob-flow/
├── public/ # Static assets
│ ├── images/ # Image files and L2 logos
│ └── fonts/ # Custom web fonts
├── src/ # Source code
│ ├── app/ # Next.js App Router
│ ├── components/ # React components
│ │ ├── BlobGraphs.tsx # Blob data visualizations
│ │ ├── ExplainerSection.tsx # Educational content
│ │ ├── Footer.tsx # Site footer
│ │ ├── Header.tsx # Application header with network selection
│ │ ├── LatestBlocksTable.tsx # Recent blocks with blob data
│ │ ├── LiveMetrics.tsx # Real-time network metrics
│ │ ├── MempoolTable.tsx # Pending blob transactions
│ │ ├── MetricCard.tsx # Individual metric display card
│ │ ├── MetricsCharts.tsx # Time-series data charts
│ │ ├── SearchModal.tsx # Search interface with filters
│ │ ├── TopUsersTable.tsx # Top blob data users
│ │ └── UserDetailView.tsx # User-specific analytics
│ ├── constants/ # Application constants
│ ├── hooks/ # Custom React hooks
│ │ ├── useLocalStorage.ts # Client-side storage
│ │ └── useSearchShortcut.ts # Keyboard shortcut handling
│ ├── lib/ # Library code, API clients
│ ├── styles/ # Global styles and CSS modules
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Utility functions
├── .gitignore # Git ignore file
├── next.config.js # Next.js configuration
├── package.json # Project dependencies
├── postcss.config.js # PostCSS configuration
├── tailwind.config.js # Tailwind CSS configuration
└── tsconfig.json # TypeScript configuration
- Next.js (v15.3.1) - React framework with App Router
- React (v19.1.0) - JavaScript UI library
- TypeScript (v5.8.3) - Type-safe JavaScript
- Tailwind CSS (v3.3.0) - Utility-first CSS framework
- Recharts (v2.15.3) - Composable charting library
- Font Awesome - Icon library via CDN
- Custom typography using GT Flexa and Windsor Bold font families
- Dark theme with grid background pattern
- Mobile-optimized interface with bottom slide-up navigation menu
- Responsive design
The application is currently set up with placeholder/mock data for demonstration and development purposes. The API client is configured but points to a placeholder URL. The UI is fully functional with mock data to demonstrate the application's capabilities.
This project is licensed under the MIT License.