A notification before 7am. What to wear, and whether to bring an umbrella.
Tap the notification for another day →
A forecast hands you numbers. 14°C, 40% chance of rain, 3mm expected. What you need is a decision: jacket or no jacket, umbrella or no umbrella.
Translating one into the other is small work, but it is work, and it lands every morning before you're really awake. 40% chance of rain tells you almost nothing about whether you'll get wet.
One notification before 7am. The call is already made. Then I get dressed.
Clothes come off the feels-like high between 7am and 9pm, not the 3am low.
The umbrella line only shows up if 5mm of rain is still coming, or 1.5mm in one hour. Drizzle doesn't count. I'll walk through drizzle.
Rain that already fell overnight doesn't count either.
Wind and UV join the second line when they cross a threshold. Most mornings neither does.
A range says how hot, not when, so the third line names the warmest stretch. A span, not a peak: a high of 23.5° at 5pm is usually within a degree of itself from 3pm to 8pm.
Air quality rides in the title every day, worst AQI of the daylight hours. Above 100 it picks up a 😷, because that's where it changes what you'd do.
Nothing gets a sentence. A phone cuts the title around twenty characters, so the numbers go first and the advice goes away: 12-24° already tells you to wear layers.
git clone https://github.com/kimhjona/weather-brief
cd weather-brief
python3 weather.py set-location 97205 # your postal code
python3 weather.py # today, in the terminal
python3 weather.py set-topic # pick a private ntfy topic
python3 weather.py send # and now on your phone
Subscribe to the topic in the ntfy app. A GitHub Actions workflow handles the timing and daylight saving, so it doesn't need your laptop open.
No API key, no account, no dependencies. One Python file. Open-Meteo for forecasts, ntfy for delivery. Both are free and neither wants a key.
I wanted something that still works in a year.