spin0 portfolio

Forecast Grid

A matrix that places forecasts from different providers for quick comparison

Open the app

App features

  • Unified forecast grid combining multiple weather providers.
  • Clear views with consistent formatting.
  • Normalized weather descriptions and icons across providers.
  • Responsive layout that adapts cleanly across screen sizes.
  • User guide is available inside the app via the menu.

Tech Stack

Motivation

  • Different apps kept giving different forecasts — not knowing which one to trust, sometimes I got soaked, sometimes I over‑prepared.
  • I wanted to understand why forecasts differ so much.

Early exploration

  • I installed several different apps, but switching apps was inconvenient and comparing them was impossible.
  • Found that the apps rely on different APIs, each built on its own data sources, models, and processing techniques.

Prototyping

  • Started with a Python script printing raw forecast values.
  • It helped me understand how each provider structures data.

Development process

  • Chose Next.js for routing and fast SSR, React for the UI foundation, and Iconify for consistent weather icons.
  • Designed a compact grid to show forecasts from multiple providers all at once.
  • Created a unified set of weather descriptions and normalized forecast information across providers with very different response formats.
desktop

Challenges

  • Providers used different timezones and started their daily forecasts at different timestamps, so it was necessary to create a set of canonical dates and map everything into common days and hours.
  • Handling events passed through redirects with mixed server and client components required careful debugging.
  • Precipitation data varies widely — some providers return probability percentages, others return amounts in mm or inches with unclear labels, so some cases still need closer investigation.

What I learned

  • Developing strategies for interpreting inconsistent API structures and aligning data from multiple sources.
  • Designing UI patterns that remain clear and stable across very different screen sizes.
  • Gaining a better understanding of how server and client components interact in real workflows.

Future enhancements

  • Looking for more providers that offer full‑week forecasts on free‑tier APIs.
  • Exploring the possibility of adding hourly forecasts, if free APIs allow.
  • Considering a feature that sorts providers by reliability determined by each user.