Stop setting up json-server for every prototype. There's a faster way.
You're building a frontend. The backend isn't ready. You need one endpoint that returns a list of users. So you do what you always do: npm install -g json-server mkdir mock-server && cd mock-server touch db.json Then you write the JSON, configure the routes, figure out why CORS is blocking your React app, fix it, run the server — and 15 minutes later you finally have a GET /users endpoint returning fake data. For something you'll throw away tomorrow. I've done this probably 200 times. Every single time I think: there has to be a faster way. Postman mock servers — require an account, a workspace, a collection. Too much setup for a throwaway endpoint. Beeceptor — requires signup. Gets in the way. Mockoon — great tool, but runs locally. Useless when you want to share the endpoint with a teammate or test from a mobile device. RequestBin — receives requests, doesn't respond with data. A quick Express server — still requires Node, a file, and remembering to kill the process later. None of these solve the actual problem: I want to paste JSON and get a URL. Right now. From any machine. Without installing anything. I spent a weekend building MockBolt — paste JSON, get a live API endpoint instantly. No account. No install. No CLI. No local server. Here's the full flow: Go to mockbolt.com Paste your JSON response Pick which HTTP methods it should accept Optionally set a custom status code, response delay, or custom headers Click Generate You get a URL like https://mockbolt.com/b/abc123. That's your live API. Takes about 10 seconds. useEffect(() => { fetch('https://mockbolt.com/b/abc123') .then(res => res.json()) .then(data => setUsers(data.users)); }, []); No proxy config. No CORS headers to set. Access-Control-Allow-Origin: * is open by default. Set the status code to 500 or 503, point your app at it, verify your error boundary actually works. fetch('https://mockbolt.com/b/your-endpoint') .then(res => { if (!res.ok) throw new Error(`Server error: ${res.status}`); return res.json(); }) .catch(err => console.error('Caught:', err)); Share the mock URL with your team. Everyone points at the same endpoint. When the real API is ready — swap one URL. Spin up a mock with realistic data, build the UI on top of it, demo without any backend running. Works from their browser, their phone, anywhere. I've run internal workshops where I needed everyone to hit the same API instantly. Creating a mock took 10 seconds. No one installed anything. Point a collection at a mock endpoint to verify request structure and headers before the real endpoint exists. Set response delay to 2000ms and your mock simulates a slow server: // Your loading skeleton should show for 2 seconds // Your timeout logic should kick in at the right time // This exercises real fetch lifecycle — not a fake setTimeout fetch('https://mockbolt.com/b/your-slow-endpoint') Way more realistic than wrapping mock data in setTimeout inside your component. It exercises actual fetch lifecycle including cancellation and AbortController behavior. Feature MockBolt Beeceptor Mockoon json-server No signup ✅ ❌ ✅ ✅ No install ✅ ✅ ❌ ❌ Live in < 10s ✅ ❌ ❌ ❌ Open CORS ✅ ✅ ✅ ❌ Response delay ✅ ✅ ✅ ❌ Custom headers ✅ ✅ ✅ ❌ Shareable URL ✅ ✅ ❌ ❌ Backend: FastAPI + PostgreSQL, async SQLAlchemy Frontend: React 18, TypeScript, Tailwind CSS, Vite Hosting: AWS Lightsail behind Cloudflare Payments: Lemon Squeezy (HMAC-signed webhooks) The webhook validation was the most interesting part to build — mode-aware HMAC secrets, idempotent payment recording, atomic upgrade transactions. Worth a separate post if anyone's interested. No request logging — you can't see incoming requests to your mock No conditional responses — always returns the same JSON No sequences — can't return different data on 1st/2nd/3rd call No webhooks — can't have the mock call your server back These are on the roadmap. For most prototyping use cases, a static JSON response is all you need. Try it: mockbolt.com Happy to answer questions in the comments — especially if you have use cases I haven't thought of.
