Digital Glissade About Services Blog Projects Contact

Ski Weather Outlook Notes

Back to App | GitHub Repo

About the App:

The Ski Weather Outlook app is a simple web application that summarizes and scores the 7-day weather forecast for ski areas in Washington state.

The app is built using the following tools:

Dashboard Summary:

Ratings are determined by using the lowest status value of any forecasted weather property for each day.

Example:
Temperature = GREEN
Weather = YELLOW
Wind Gust = RED

Overall Rating = RED

Each property status is set according to the following criteria:

Temperature:
GREEN = 15 °F ≤ max ≤ 33 °F
YELLOW = 33 °F < max < 35 °F or 10 °F ≤ min < 15 °F
RED = min < 10 °F or 35 °F ≤ max

Wind Speed:
GREEN = avg < 20 mph
YELLOW = 20 mph ≤ avg < 35 mph
RED = 35 mph ≤ avg

Wind Gust:
GREEN = max < 35 mph
YELLOW = 35 mph ≤ max < 45 mph
RED = 45 mph ≤ max

Weather:
GREEN = Snow or No Precipitation
YELLOW = Rain/Snow Mix
RED = Rain

Snowfall Amount:
GREEN = 3.0 in ≤ total
YELLOW = 1.1 in ≤ total < 3.0 in
RED = total < 1.1 in

Snow Level:
GREEN = max < base elevation
YELLOW = base < max < summit
RED = summit < max

How it Works:

This app collects forecast grid data once per day from the NOAA weather API for each ski area and saves the raw data in JSON in a blob storage container.

Logic is included to handle HTTP request errors and changing NOAA endpoints.

After successfully retrieving forecast data for each location, the app loads each forecast from blob storage and creates a forecast object. The forecast data are parsed and grouped by day. Next, depending on the weather property, the maximum, minimum, average, and total values are calculated for the AM, PM, overnight (ON), and for the full 24 hour period from 6am to the following 6am. Then, measures are converted from SI to US Customary units. Finally, the status for each day is determined and set by the above criteria.

Logic is included to handle null property data and manage the variable frequency of forecast timepoints.

Data for each location and each day are then used to build cells in a table object. The table is then written to HTML. The HTML file is stored in a blob storage container configured for web access.

Upcoming Features:

Below is a short list of potential features. Would love to hear your feedback!