Ahmed Abdelaziz

Weather Now — Real-Time Weather Web AppDesign Docs

Functional Requirements

What the app must do, in plain language.

Last updated August 2026

Overview

These are the product requirements in plain language — what a visitor should be able to do, and what the app should handle quietly.

How to read

Must = core value. Should = improves the experience. Can = nice to have.


Core User Tasks

IDRequirementPriority
FR-01Search any city by name and see up to 10 matching places with country flagsMust
FR-02Detect "my location" through the browser on first loadMust
FR-03See current conditions: temperature, feels-like, humidity, wind, precipitationMust
FR-04See a 24-hour hourly forecast, grouped by day with a day selectorMust
FR-05See a 7-day daily forecast with high/low rangesMust
FR-06Switch between metric and imperial units — instantly, with no reloadMust
FR-07Remember chosen units and last location across visitsShould
FR-08Work with keyboard, screen reader, and touch as well as a mouseMust
FR-09Show search-engine and social-share previews (OG image, structured data)Can

Behavior That Matters

  • Search never lies — results are debounced (500 ms) and older requests are cancelled, so a fast typist can never see stale results for the wrong query.
  • Instant return visits — coordinates from the previous visit fire immediately from localStorage; a fresh geolocation fix silently replaces them when it arrives.
  • Units switch in place — data is fetched once in Celsius and converted at render time. No refetch, no loading state.
  • No jumping layout — the forecast grid is reserved from first paint; each section fills its skeleton independently when data lands.
  • Everyone gets the same app — full ARIA combobox semantics, skip link, visible focus, 44 px touch targets, reduced-motion support.

Out of Scope

To keep the project focused:

  • No backend of its own, no accounts, no favorites or saved places.
  • No offline mode — weather data requires an internet connection.
  • No automated tests in the current version (documented honestly, not hidden).

Trade-off made visible

A frontend-only weather client is a complete product on its own. Everything that would require a server is either keyless (Open-Meteo) or isolated behind one small server action.


Acceptance in One Glance

  • A first-time visitor sees their local weather within seconds of allowing location access — with zero setup.
  • Typing a partial city name shows relevant suggestions before they finish typing, with no flicker.
  • Switching Celsius → Fahrenheit updates every widget instantly and survives a page reload.

Why it matters

The requirements target the two things users actually judge a weather app by: how fast it answers, and whether it respects their preferences.