A Postman style JSON-RPC playground for testing blockchain RPC endpoints. No backend required - all requests are made directly from your browser to the RPC providers.
π Live Playground: https://krainode.krissemmy.com/playground
- Multi-chain support - Test endpoints across 13+ blockchain networks
- Provider selection - Choose from curated public providers or use your own custom URLs
- HTTP/HTTPS support - Works with both local development nodes and production endpoints
- Live endpoint testing - Probe endpoints before making requests to check connectivity
- Request/Response viewer - JSON editor with syntax highlighting and formatted responses
- Local persistence - Your selections and recent requests are saved locally
- Zero infrastructure - Pure client-side application, deploy anywhere
# Clone and navigate to the project
git clone https://github.com/krissemmy/krainode-rpc-proxy.git
cd krainode-rpc-proxy
# Install dependencies and start dev server
cd web
npm install
npm run dev
# Open http://localhost:8000# Start development environment
make docker-dev
# Visit http://localhost:8000
# Stop when done
make docker-dev-down# Copy environment file
cp env.example .env
# Edit .env with your domain and email
# EMAIL=your-email@example.com
# APP_HOST=your-domain.com
# Start production stack
make docker-up
# View logs
make docker-logsThe app is a static React application that can be deployed to any static hosting service:
# Build the application
cd web
npm install
npm run build
# Deploy the 'dist' folder to your hosting serviceVercel deployment:
- Connect your GitHub repository to Vercel
- Set build command:
cd web && npm install && npm run build - Set output directory:
web/dist - Deploy
Netlify deployment:
- Connect your GitHub repository to Netlify
- Set build command:
cd web && npm install && npm run build - Set publish directory:
web/dist - Deploy
For production deployments with custom domains and automatic HTTPS:
- Set up your domain DNS to point to your server
- Configure environment variables:
EMAIL=your-email@example.com APP_HOST=your-domain.com
- Run
make docker-up
Caddy will automatically obtain SSL certificates and handle HTTPS redirects.
Edit chains.yaml to add new blockchain networks or RPC providers:
ethereum
mainnet:
noderpc: "https://api.noderpc.xyz/rpc-mainnet/public"
publicnode: "https://ethereum-rpc.publicnode.com"After editing, restart the dev server or rebuild to regenerate the chains configuration.
Create a .env file with:
# Required for Caddy TLS certificates
EMAIL=your-email@example.com
# Your domain name (for production)
APP_HOST=your-domain.comkrainode-rpc-proxy/
βββ web/ # React frontend
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Main application pages
β β βββ lib/ # Utility functions
β βββ scripts/ # Build scripts
β βββ public/ # Static assets
βββ chains.yaml # Chain/network/provider configuration
βββ Dockerfile # Production Docker image
βββ docker-compose.yml # Production stack
βββ docker-compose-dev.yml # Development stack
βββ Caddyfile # Reverse proxy configuration
βββ Makefile # Development commands
# Development
make dev # Start Vite dev server
make build # Build production bundle
make clean # Clean build artifacts
# Docker
make docker-dev # Start development with Docker
make docker-up # Start production stack
make docker-down # Stop production stack
make docker-logs # View container logs- New RPC methods: Add to
MethodSelectcomponent - New chains: Update
chains.yamland restart dev server - UI components: Add to
web/src/components/ - Styling: Uses Tailwind CSS, edit component classes
Some RPC providers block browser requests due to CORS policies. The playground will show:
- OK - Request successful
- Blocked (CORS/Network) - CORS or network issue
- Timeout - No response within 30 seconds (RPC requests) or 4 seconds (probe requests)
Solutions:
- Try a different provider
- Use a CORS proxy for development
- Deploy your own RPC endpoint with proper CORS headers
# Clear node_modules and reinstall
cd web
rm -rf node_modules package-lock.json
npm install
# Clear browser cache and localStorage
# Open dev tools > Application > Storage > Clear storage# Rebuild containers
make docker-down
make docker-up
# Check logs
make docker-logs- Fork the repository
- Create a feature branch
- Make your changes
- Test locally with
make dev - Submit a pull request
Currently configured in chains.yml with PublicNode endpoints:
- Ethereum (
ethereum) - Base (
base) - Celo (
celo) - Avail (
avail) - Blast (
blast) - Mantle (
mantle) - Linea (
linea) - Sei EVM (
sei-evm) - Scroll (
scroll) - Arbitrum One (
arbitrum) - Avalanche C-Chain (
avalanche-c-chain) - Gnosis (
gnosis) - Unichain (
unichain) - Optimism (
unichain) - Plasma (
unichain)
- GitHub Issues: Report bugs and request features
- Documentation: Full API documentation
MIT License - see LICENSE file for details.
Made with β€οΈ for the blockchain community