Skip to main content

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.

Repository

Summer 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