CoinInsight
2025
A cryptocurrency tracking app that pulls real-time market data from the CoinGecko API. Features coin analytics, market info, and Zod validation on every request and response. Handles API rate limiting gracefully.
About
I built CoinInsight in a single night as a self-imposed exercise in wrapping an unreliable public API properly. You can check prices and dive into per-coin analytics, but the real point was practicing schema validation under rate limits.
Architecture
The app is a Next.js App Router project where the browser never talks to CoinGecko directly. Internal API routes proxy every call, which keeps rate limit handling in one place.
Those routes answer with Cache-Control headers (max-age=60, stale-while-revalidate=30), so repeat requests are served from cache and the free-tier rate limit is rarely touched.
Every request and every CoinGecko response passes through Zod schemas before reaching React components. If CoinGecko changes its response format, the app shows a graceful fallback instead of rendering garbage.
What I Learned
This was my first deliberate exercise in defensive API consumption. The CoinGecko rate limit forced me to think about caching strategy and degraded-but-functional UI states.
Validating external data at the boundary became a habit. Every project I have built since that touches a third-party API gets a Zod schema at the door.
Today
The code is public on GitHub. The app did its job in one night, and I keep it as a reference for how I wrap external APIs.