Lab
Live skill demos
Every panel calls the real gateway (Express), catalog (FastAPI) and engine (Go) services. The request console under each demo shows exactly what went over the wire: status, latency, headers and the JSON body.
Stripe test mode · signed webhooks · idempotency
Payments
Pick a tier and check out. Prices live on the server (a client-sent amount is rejected), the webhook is verified against its raw-body signature, and duplicate deliveries are ignored. You come back to an animated timeline of the webhook events.
Test card 4242 4242 4242 4242, any future expiry, any CVC. Use 4000 0000 0000 0002 to see a declined payment.
Recent orders (anonymized)
Loading recent orders…
Request console (0)
No requests yet. Use the controls above.
argon2id · JWT · rotating refresh tokens
Auth & security
Register a throwaway user, inspect the 15-minute access token, rotate the HttpOnly refresh cookie, then simulate a stolen refresh token: the gateway detects the reuse and revokes the whole token family, so even the unexpired access token stops working.
Request console (0)
No requests yet. Use the controls above.
Redis · Lua · sliding window
Rate limiter
Fires 30 requests at an endpoint allowed 20 per minute. The gateway counts them in a Redis sorted set with an atomic Lua script. Watch the RateLimit-Remaining header fall to 0 and the 429s begin. This demo has its own bucket, so it never blocks the other panels.
RateLimit-Remaining after each request. 0 requests: 0 allowed (200), 0 rate limited (429).Request console (0)
No requests yet. Use the controls above.
Redis · cache-aside · FastAPI + MongoDB
Cache: MISS vs HIT
Fetches the same project twice from the catalog service. The first read goes to MongoDB and fills Redis (X-Cache: MISS); the second is served from Redis (HIT). Invalidate goes through the gateway, which holds the catalog's service key.
Request 1
—
not fetched yet
Request 2
—
not fetched yet
Request console (0)
No requests yet. Use the controls above.
Express · FastAPI · Go
Polyglot race
The same contract (GET /bench/primes?n=, sieve of Eratosthenes) in three languages, called in parallel. Bars show each service's self-reported compute time; all three must return the same prime count.
- Express TypeScript / Node 24—
- FastAPI Python 3.12—
- Go Go 1.27—
Request console (0)
No requests yet. Use the controls above.
Postgres · MongoDB · Redis
Data stores
Each store holds what it is best at. Counts are live from each database.
PostgreSQL
Relational data with integrity constraints · Neon in production
- Users
- n/a
- Orders
- n/a
- Stripe events
- n/a
- Visits
- n/a
- Contact messages
- n/a
MongoDB
Flexible project documents with text search · Atlas in production
- Projects
- n/a
Redis
Cache entries, rate-limit windows, locks · Upstash in production
- Keys
- n/a
Request console (0)
No requests yet. Use the controls above.
Vite · React · TanStack Router, Query & Table
Admin dashboard
The single-page app I use to run this site: a live health board for every service, visit charts, a sortable and filterable orders table, and project editing with optimistic updates. Try it in read-only demo mode, with sample admin views over public data and every write disabled.
Open the dashboard demoNext.js · TypeScript · Tailwind
This site
Server components with typed API clients validated by shared zod contracts, a Lighthouse score of 100 across the board, zero layout shift, light/dark themes and reduced-motion support. Browse the projects to see it in action.