Around the World
Dynamic web application displaying detailed global country data including population, region, and currency filter options.

Problem
Public country-data APIs return rich, deeply nested records but most frontends that consume them feel like dumped JSON tables. I wanted to build the explorer I'd actually want to use — fast filter by region and currency, clean per-country detail pages, and a layout that doesn't fight against the natural shape of the data.
Approach
Single-page React app routed with React Router: a list view with region/currency filters drives a detail view via dynamic params. Country data is fetched once and held in component state, then filtered client-side — fast enough at this dataset size that paginating or virtualising would be premature. React Select handles the currency/region pickers because the default browser <select> doesn't search-as-you-type and the list of currencies is long.
Stack & rationale
- React RouterStandard client-side routing for the list → detail flow. Keeps URLs shareable (linking directly to a country's page works on refresh).
- React SelectSearchable, multi-select-capable dropdowns. Native <select> doesn't filter as you type and handles long currency lists poorly.
- Tailwind CSSCountry cards have consistent spacing and a hover state that's one utility class away — no need for a dedicated card stylesheet.
- Fetch + React stateDataset is small enough that filtering in memory beats a query layer; React Query would have been over-engineering for a single endpoint.
Highlights
- ▸Filter countries by region and currency simultaneously; filters compose without page reloads
- ▸Dynamic country detail routes (`/country/:code`) — refresh-safe and bookmarkable
- ▸Region + currency picker uses searchable dropdowns instead of native selects
- ▸Responsive card grid that adapts from 4 columns down to 1 cleanly