Skip to content
CoinInsight screenshot

CoinInsight

Next.js JavaScript TailwindCSS DaisyUI Zod

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.