Inspiration

Farmworkers, construction crews, and delivery drivers in California's Central Valley work through some of the hottest days in the state, and many of them speak Spanish or Punjabi. Most weather apps show a temperature in English and leave the worker to decide what it means. We wanted one screen that answers "How dangerous is it out there right now, and what should I do?" in the worker's own language.

What it does

  • Gets the heat and air quality for your exact spot: tap Use my location, search any California town, or pick one of eight Valley quick-picks.
  • Shows one big color-coded risk level (Low, Caution, High, Danger, Extreme) with an icon.
  • Raises the level when the air is unhealthy (wildfire smoke), and says so.
  • Heat risk by hour: a 24-hour color bar with "Best hours" and "Avoid" windows, so a crew can plan the shift, not just read a number.
  • Direct sun toggle: adds 10°F, because full sun makes it feel hotter than the shade-based heat index says.
  • 3–4 plain-language safety tips that change with conditions (water, shade, rest, warning signs, N95 mask in smoke).
  • A reminder of California's heat rules (water, shade, and rest at 80°F and above).
  • Share button that sends the current risk summary to a crew group chat.
  • English, Español, and ਪੰਜਾਬੀ (Gurmukhi) with one tap. Mobile-first, large text, simple icons.

How we built it

One HTML file with no build tools, no frameworks, and no API keys. Weather and air quality come from the free Open-Meteo forecast and air-quality APIs, and town search uses Open-Meteo's geocoding API. Open-Meteo does not provide a heat index, so we compute it in JavaScript with the National Weather Service Rothfusz equation, including its low- and high-humidity corrections, and run it on every hour of the forecast. Requests run in parallel, and if the air-quality call fails the heat reading still shows. The last result is cached in the browser so the page opens instantly on a weak signal. All text lives in one translation table.

Challenges we ran into

  • No API returns a heat index, so we implemented and checked the formula ourselves (for example, 96°F at 65% humidity gives about 121°F).
  • Punjabi layout: Gurmukhi text is taller and wraps differently, so cards and buttons had to be sized for it.
  • Wording safety advice simply enough to act on in three languages.
  • Avoiding stale results when a user quickly switches towns.

Accomplishments that we're proud of

A real tool a crew could use today: it works anywhere in California, plans the day by the hour, and speaks the languages of the workers who need it most.

What we learned

Heat risk is about timing as much as temperature, and language access is a safety feature. We also learned how much sun exposure and smoke change what a "safe" day looks like.

What's next for Valley Heat Safe

  • Native-speaker review of the Spanish and Punjabi text (currently drafted by us).
  • Text/WhatsApp alerts when conditions cross into Danger.
  • Offline install as a phone app, more languages (Hmong, Tagalog), and read-aloud for low-literacy users.
  • Partnering with farmworker and labor organizations to test with real crews.

Built With

  • claude-code
  • css
  • geolocation-api
  • html
  • javascript
  • localstorage
  • open-meteo
  • open-meteo-air-quality-api
  • open-meteo-geocoding-api
  • web-share-api
Share this project:

Updates

Submission history