Why I built it
Finding the best stablecoin yield meant checking Binance, Bybit, Bitget, MEXC and Gate.io by hand every time, and no API returned all five in one call.
What it does
- Earn rates for USDT, USDC, BTC, ETH and SOL from five exchanges in one response
- Scheduled refresh every 6 hours, with an optional live refresh on a cache miss
- Rate limiting to keep it from being abused
- Runs on serverless functions for effectively zero cost
How it’s built
Fastify and TypeScript on Vercel serverless functions, with Upstash Redis as a 7-day cache. Because the cache outlives several missed refreshes, the API keeps answering even if the scheduled job fails.
The hard part
Normalisation. Every exchange has its own auth model, response shape and field names. A per-exchange adapter turns each one into the same shape: exchange, asset, rate and product type.
Stack
TypeScriptFastifyUpstash RedisVercelCron
