CoinInsight
2025
Built a cryptocurrency tracking app that pulls real-time market data from the CoinGecko API. Features coin analytics, market info, and request validation with Zod. Handles API rate limiting gracefully.
About
I built CoinInsight in a single night as a self-imposed exercise: take an unreliable public API, wrap it properly, and ship something clean. The result is a tracker where you can check prices and dive into per-coin analytics, but the real point was practicing defensive API consumption and schema validation under real-world rate limit constraints.
Architecture
The app uses Next.js with server-side rendering for the initial data fetch, ensuring fast page loads and proper SEO metadata. Client-side data refreshing uses SWR with a 30-second revalidation interval, so the UI stays current without manual refreshes.
Every API response passes through Zod validation schemas before reaching React components. This creates a strict boundary between untrusted external data and the UI layer. If CoinGecko changes their response format, the app shows a graceful fallback instead of rendering garbage.
What I Learned
This was my first deep dive into defensive API consumption. The CoinGecko rate limit problem forced me to think about caching strategies, retry logic, and degraded-but-functional UI states. The Zod validation pattern became a habit I now apply to every project that touches external APIs.