Horus
A Node.js/React short term weather report designed for sports, live at https://brunopc-net.github.io/Horus.
Named after the Egyptian god of rainstorms, weather, sky and war.
RepositorySummer 2023, Wildfires were terrible in Canada. With global warming effects increasing every year, I wanted an algorithm that would advice me on what to do when I'm planning to go play outside. I also wanted something to advice me to protect from the sun, as UV can be high even if it's cloudy.
While I was on it, I decided to include precipitation alerts so I won't go for a long bike ride if there will be rain in two hours for exemple. I also included temperature alerts to make sure I'm aware of the conditions for my time outside.
It consists of two sections:
Alerts
Here's the alerts displayed in the advice section:
🏭 Air quality (AQI-US)
You can read about Air Quality Index (U.S.) here. I choose to not use maroon AIQ color for consistency with the other alerts and to make the app more intuitive.
🟢 0-50
No alert
🟡 50-100
Not the best, outside exposure still ok
🟠 100-150
Play outside with N95 mask😷
Close windows, turn on air purifier
🔴 150-200
Play outside max 120min with N95😷
Close windows, air purifier at moderate level
🟣 200-250
No exercice, 60min max outside exposure with N95😷
Close windows, air purifier at high level
🟣 250-300
Stay inside
Close windows, air purifier at max level
💀 300+
Stay inside with N95😷
Close windows, air purifier at max level
☀️ UV Index
You can read about UV Index here.
For UV, as it fluctuate during the day, I put two alerts:
- A max UV alert (if max level is later in the day)
- A time to burn alert. Time to burn is calculated by using Fitzpatrick's formula
(200 * skin_type_resistance)⁄(3 * UVI)
with skin type II (skin_type_resistance = 3)
If you're skin type 1, be aware that this metric is too optimistic for you ; you should protect from sun approximatly 16% faster then what's adviced and at UV Level 2.
Max UV Alert
🟢 0-2: No alert
🟡 3-5: Max UV predicted: x
🟠 6-7: Max UV predicted: x
🔴 8-10: Max UV predicted: x
🟣 11-12: Max UV predicted: x
💀 13+: Max UV predicted: x
Time to burn
🟢 Over predicted forecast time: No alert
🟢ℹ️ 240+ minutes: You will need sunscreen in x min
🟢⚠️ 120-240 minutes: Protect your skin after x min
🟡 30-120 minutes: Protect your skin after x min
🟠 20-30 minutes: Protect your skin after x min
🔴 17-20 minutes: Protect your skin after x min
🟣 15-17 minutes: Protect your skin after x min
💀 15- minutes: Protect your skin after x min
🌡️ Temperature
Temperature used is the "feels like" temperature, so heat index should be considered in the summer and wind index should be considered in the winter.
🥵 Heat alerts
🟢 12-28°C
No alert
🟡 28-32°C
Caution with exercice, listen to your body
Drink proactively
🟠 32-36°C
Exercice moderatly, take regular breaks
Take a lot of water/electrolytes
🔴 36-40°C
Exercice lightly, no more then 120min Zone2
Take as much water/electrolytes as possible
🟣 40-44°C
Exercice very lightly, no more then 60min Zone1
Take as much water/electrolytes as possible
💀 44+°C
Avoid exercice, stay as cool as you can
Take as much water/electrolytes as possible
🥶 Cold alerts
🟢 12 to 28°C
No alert
🟡 6 to 12°C
You may need a light jacket or sleeves
🟠 0 to 6°C
You may need winter gear, watch out for ice🧊
🔴 -12 to 0°C
Put winter gear
🟣 -24 to -12°C
Wear maximum clothing, goggles
💀 Lower than -24°C
Extreme cold, stay indoors
🌧️🌨️ Precipitations
Support rain and snow
🌧️ Rain alerts
🟢 No rain: No alert
🟡 0-2mm: Some rain drops expected
🟠 2-6mm: Significant rain expected
🔴 6-12mm: A lot of rain is expected
🟣 12-24mm: Deluge is expected
💀 24+mm: Heavy deluge is expected
🌨️ Snow alerts
🟢 No rain: No alert
🟡 0-5cm: A bit of snow is expected
🟠 5-12cm: Significant snow expected
🔴 12-20cm: A lot of snow is expected
🟣 20-30cm: Snow storm is expected
💀 30+cm: Heavy snow storm is expected