Problem
Weather interfaces need to support more than one way of locating a forecast while keeping loading, error, validation, and result states consistent across every search flow.
Approach
The application separates city, ZIP code, and coordinate-based searches into focused components. Shared API services handle the weather requests, React Query manages asynchronous state, and React Hook Form with Yup provides structured input validation. Reusable weather cards and data components keep the result presentation consistent.
Outcome
The project demonstrates a typed, component-based frontend for external API data. Users can choose the lookup method that matches the information they have while receiving a consistent interface for validation and weather results.