9.7 KiB
API Analysis and UX/UI Recommendations
Executive Summary
After testing all API endpoints and analyzing the frontend code, I've identified several critical issues, inconsistencies, and opportunities for improvement.
🔴 Critical Issues
1. Broken API Endpoints
Problem: Multiple endpoints return 400 errors with message: "Params 'module' and 'action' are required parameters"
Affected Endpoints:
/api/v1/blocks/138/{blockNumber}- Returns 400/api/v1/transactions/138/{txHash}- Returns 400/api/v1/addresses/138/{address}- Returns 400/api/v1/transactions?from_address={address}- Returns 400/api/v2/status- Returns 400/health- Returns 400
Impact:
- Block detail pages don't work
- Transaction detail pages don't work
- Address detail pages don't work
- Health checks fail
Recommendation:
- Fix API routing to properly handle REST endpoints
- Ensure
/api/v1/*and/api/v2/*routes are properly configured - Implement proper health check endpoint
2. Data Structure Mismatches
Problem: Frontend expects different data structures than what Blockscout API provides
Blockscout Block Structure:
{
"items": [{
"hash": "0x...",
"height": 158162,
"miner": { "hash": "0x..." },
"transaction_count": 0,
"gas_used": "0",
"gas_limit": "30000000",
"timestamp": "2025-12-24T22:02:37.000000Z"
}]
}
Frontend Expects:
block.number(but Blockscout hasheight)block.mineras string (but Blockscout hasminer.hash)block.transaction_count✓ (matches)block.gas_used✓ (matches)block.timestamp✓ (matches)
Blockscout Transaction Structure:
{
"items": [{
"hash": "0x...",
"from": { "hash": "0x..." },
"to": { "hash": "0x..." },
"value": "5000000000000000000",
"block_number": null, // May be missing!
"status": "ok",
"gas_used": "21000"
}]
}
Frontend Expects:
tx.fromas string (but Blockscout hasfrom.hash)tx.toas string (but Blockscout hasto.hash)tx.block_number(may be null in Blockscout)tx.statusas number (but Blockscout has string "ok"/"error")
Recommendation:
- Create adapter functions to normalize Blockscout data to expected format
- Handle null/undefined values gracefully
- Map status strings to numbers (ok=1, error=0)
3. Missing Error Handling
Issues:
- No retry logic for failed API calls
- No user-friendly error messages
- No fallback when Blockscout API is unavailable
- No loading states for detail pages
Recommendation:
- Implement exponential backoff retry logic
- Show user-friendly error messages with retry buttons
- Add fallback to cached data when API fails
- Add skeleton loaders for better UX
🟡 Data Inconsistencies
1. Stats Endpoint Mismatch
Current Stats Response:
{
"total_blocks": "153990",
"total_transactions": "66",
"total_addresses": "38",
"average_block_time": 2.0E+3,
"gas_prices": { "slow": 0.01, "average": 0.01, "fast": 0.01 }
}
Issues:
- Numbers are strings instead of numbers
average_block_timeis in milliseconds (2000ms = 2 seconds) but not clearly labeled- Gas prices are very low (0.01) - may be incorrect or need formatting
- Missing fields: network hash rate, difficulty, total supply
Recommendation:
- Return numbers as numbers, not strings
- Add units to time values (e.g., "2.0s" instead of "2000")
- Format gas prices properly (show in gwei)
- Add missing network statistics
2. Block Data Gaps
Missing Information:
- Block rewards
- Uncle blocks
- Base fee per gas (present but not displayed)
- Burnt fees
- Difficulty trend
Recommendation:
- Display all available block data
- Add visual indicators for EIP-1559 blocks
- Show fee burn information
3. Transaction Data Gaps
Missing Information:
- Transaction type (EIP-1559, legacy, etc.)
- Max fee per gas
- Priority fee
- Burnt fees
- Internal transactions
- Token transfers
- Event logs
- Input data decoding
Recommendation:
- Display transaction type badge
- Show fee breakdown (base + priority + burnt)
- Add tabs for internal transactions and token transfers
- Decode and display event logs
- Add input data decoder
🟢 UX/UI Improvements
1. Loading States
Current Issues:
- Generic spinner for all loading states
- No indication of what's loading
- No progress indication for long operations
Recommendations:
- Add skeleton loaders matching content structure
- Show specific loading messages ("Loading block #12345...")
- Add progress bars for pagination
- Implement optimistic UI updates
2. Error States
Current Issues:
- Generic error messages
- No retry buttons
- No error recovery suggestions
Recommendations:
- Show specific error messages with context
- Add "Retry" buttons for failed requests
- Provide helpful error recovery suggestions
- Log errors for debugging
3. Empty States
Current Issues:
- Generic "No data" messages
- No guidance on what to do next
Recommendations:
- Add helpful empty state illustrations
- Provide search suggestions
- Show example queries
- Add links to popular addresses/blocks
4. Navigation & Breadcrumbs
Current Issues:
- No breadcrumb navigation
- Hard to navigate back from detail pages
- No history tracking
Recommendations:
- Add breadcrumb navigation
- Implement browser history for detail pages
- Add "Back" buttons
- Show navigation history
5. Search Functionality
Current Issues:
- Search box exists but functionality unclear
- No search suggestions
- No search history
Recommendations:
- Implement smart search (detect block/address/tx hash)
- Add search suggestions/autocomplete
- Show recent searches
- Add search filters (blocks, transactions, addresses)
6. Responsive Design
Recommendations:
- Test on mobile devices
- Optimize tables for small screens
- Add mobile-friendly navigation
- Implement touch gestures
7. Performance Optimizations
Current Issues:
- Loading all data on page load
- No pagination for large lists
- No caching
Recommendations:
- Implement virtual scrolling for large lists
- Add pagination with page size options
- Cache API responses
- Implement service worker for offline support
- Lazy load images and non-critical content
8. Accessibility
Recommendations:
- Add ARIA labels to all interactive elements
- Ensure keyboard navigation works
- Add focus indicators
- Test with screen readers
- Add skip navigation links
📊 Missing Features
1. Advanced Filtering
Recommendations:
- Filter blocks by date range
- Filter transactions by type, status, value range
- Filter addresses by balance, transaction count
- Save filter presets
2. Export Functionality
Recommendations:
- Export block/transaction data as CSV/JSON
- Print-friendly views
- Share links for specific blocks/transactions
3. Watchlists & Favorites
Recommendations:
- Save favorite addresses
- Watchlist for specific transactions
- Price alerts
- Notification system
4. Charts & Analytics
Recommendations:
- Network activity charts
- Gas price trends
- Transaction volume over time
- Address activity graphs
5. Token Information
Recommendations:
- Token list with prices
- Token transfer tracking
- Token holder information
- Token contract verification status
🔧 Technical Recommendations
1. API Improvements
Recommendations:
- Implement GraphQL endpoint for flexible queries
- Add WebSocket support for real-time updates
- Implement rate limiting with clear error messages
- Add API versioning strategy
- Create API documentation
2. Code Organization
Recommendations:
- Split large
index.htmlinto modules - Implement proper state management
- Add TypeScript for type safety
- Create reusable components
- Implement proper error boundaries
3. Testing
Recommendations:
- Add unit tests for utility functions
- Add integration tests for API calls
- Add E2E tests for critical user flows
- Implement visual regression testing
4. Monitoring & Analytics
Recommendations:
- Add error tracking (Sentry, etc.)
- Implement performance monitoring
- Add user analytics
- Track API response times
- Monitor API error rates
📋 Priority Action Items
High Priority (Fix Immediately)
- ✅ Fix broken API endpoints (
/api/v1/*,/health) - ✅ Implement data adapters for Blockscout format
- ✅ Add proper error handling and retry logic
- ✅ Fix data structure mismatches
Medium Priority (Next Sprint)
- Improve loading states with skeleton loaders
- Add breadcrumb navigation
- Implement search functionality
- Add export functionality
- Display missing transaction/block data
Low Priority (Future Enhancements)
- Add charts and analytics
- Implement watchlists
- Add token information
- Create mobile app
- Add WebSocket support
📝 API Endpoint Status
| Endpoint | Status | Notes |
|---|---|---|
/api/v2/stats |
✅ Working | Returns stats data |
/api/v2/blocks |
✅ Working | Returns paginated blocks |
/api/v2/transactions |
✅ Working | Returns paginated transactions |
/api/v2/status |
❌ Broken | Returns 400 error |
/api/v1/blocks/{chain}/{number} |
❌ Broken | Returns 400 error |
/api/v1/transactions/{chain}/{hash} |
❌ Broken | Returns 400 error |
/api/v1/addresses/{chain}/{address} |
❌ Broken | Returns 400 error |
/health |
❌ Broken | Returns 400 error |
🎯 Success Metrics
Track these metrics to measure improvements:
- API error rate (target: <1%)
- Page load time (target: <2s)
- Time to interactive (target: <3s)
- User error rate (target: <5%)
- Search success rate (target: >80%)
Last Updated: 2025-12-24 Analysis By: AI Assistant Status: Ready for Implementation