187 lines
5.9 KiB
Markdown
187 lines
5.9 KiB
Markdown
# Skyfeed Visual Style Guide
|
||
**Leak Technologies — Terminal Weather Aesthetic**
|
||
|
||
This document defines the Unicode-based icon system used throughout Skyfeed.
|
||
It ensures full coverage for Environment Canada’s weather, hazard, and advisory conditions.
|
||
|
||
All symbols are **terminal-safe**, **monospace-friendly**, and intentionally minimalist —
|
||
reflecting Skyfeed’s philosophy of *pure data without visual clutter*.
|
||
|
||
---
|
||
|
||
## 🌤️ Weather & Sky Conditions
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| clear / sunny | ☀ | Clear sky / sunshine |
|
||
| mostly_clear / mainly_clear | 🌤 | Few clouds |
|
||
| partly_cloudy | ⛅ | Partial cloud cover |
|
||
| mostly_cloudy | 🌥 | Cloudy with breaks |
|
||
| cloudy / overcast | ☁ | Fully overcast |
|
||
| night_clear | 🌙 | Clear night sky |
|
||
| night_partly_cloudy | 🌃 | Partial clouds at night |
|
||
| night_cloudy | ☁ | Cloudy night |
|
||
|
||
---
|
||
|
||
## 🌧️ Rain & Precipitation
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| rain / showers | 🌧 | Steady or intermittent rain |
|
||
| light_rain | 🌦 | Light rainfall / isolated showers |
|
||
| heavy_rain / rain_heavy | 🌧 | Heavy or prolonged rain |
|
||
| drizzle | 💧 | Light drizzle |
|
||
| freezing_rain / freezing_drizzle | 🧊 | Freezing precipitation |
|
||
| freezing_spray | 🧊 | Sea spray or freezing rain near coasts |
|
||
| mixed_rain_snow / mixed_precipitation | 🌧❄ | Mixed or changing precipitation |
|
||
| rainfall_warning | 🌧 | Heavy rainfall advisory |
|
||
|
||
---
|
||
|
||
## ❄️ Snow / Ice / Winter Weather
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| snow | ❄ | General snowfall |
|
||
| flurries / snow_grains | ❆ | Light flurries or grains |
|
||
| heavy_snow | ❅ | Intense snowfall |
|
||
| blowing_snow / drifting_snow | 🌬 | Snow driven by wind |
|
||
| ice_pellets / sleet / graupel | 🧊 | Ice pellets / sleet / graupel |
|
||
| hail | 🧊 | Hailstones |
|
||
| frost | ❄ | Frost or frost advisories |
|
||
| black_ice | ⚫ | Black ice conditions |
|
||
| snow_pellets | ❄ | Fine ice particles |
|
||
|
||
---
|
||
|
||
## ⛈️ Thunderstorms & Severe Weather
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| thunderstorm / thundershowers | ⛈ | Thunderstorms or heavy showers |
|
||
| lightning | ⚡ | Lightning observed |
|
||
| tstorm / storm | ⛈ | Electrical storms |
|
||
| funnel_cloud / waterspout / tornado | 🌪 | Tornadic activity or funnel clouds |
|
||
|
||
---
|
||
|
||
## 🌬️ Wind / Gale / Tropical Systems
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| wind / strong_wind | 💨 | Strong or gusty wind |
|
||
| gusty | 💨 | Occasional gusts |
|
||
| gale / gale_warning | 💨 | Gale-force winds |
|
||
| wind_chill | 🥶 | Wind chill warning |
|
||
| hurricane / cyclone / typhoon / tropical_storm | 🌀 | Tropical or post-tropical storm |
|
||
|
||
---
|
||
|
||
## 🌫️ Visibility & Air Quality
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| fog / dense_fog | 🌫 | Fog or dense fog |
|
||
| freezing_fog | 🌫 | Freezing fog |
|
||
| mist / haze | 〰 | Reduced visibility |
|
||
| smoke / ash / dust / blowing_dust | 💨 | Airborne particulates (smoke, ash, dust) |
|
||
| smog | 🌫 | Air pollution / smog |
|
||
| low_visibility / poor_visibility | 👁🗨 | Travel visibility reduced |
|
||
| air_quality / air_pollution / air_quality_alert | 🚭 | Air quality advisory |
|
||
|
||
---
|
||
|
||
## 🌡️ Temperature Extremes
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| cold / extreme_cold | 🥶 | Cold or extreme cold warning |
|
||
| hot / heat / heat_wave | 🌡 | Hot temperatures |
|
||
| heat_warning / extreme_heat | 🔥 | Heat alert or extreme heat |
|
||
|
||
---
|
||
|
||
## 🌊 Hydrological / Flood / Marine
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| flood / flash_flood | 🌊 | Flooding / flash flood |
|
||
| flood_warning | 🌊 | Official flood warning |
|
||
| storm_surge / tsunami / rip_current | 🌊 | Coastal or tidal hazard |
|
||
| marine_warning / wave | ⚓ | Marine advisory |
|
||
|
||
---
|
||
|
||
## 🚗 Travel / Road / Ice Hazards
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| travel_advisory | 🚗 | Hazardous travel conditions |
|
||
| black_ice_warning / slippery_roads | ⚫ | Black ice / slippery roads |
|
||
| road_closure | ⛔ | Road closed due to conditions |
|
||
| freezing_rain_warning | 🧊 | Freezing rain warning |
|
||
|
||
---
|
||
|
||
## 🔥 Fire / Environmental Hazards
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| wildfire / forest_fire | 🔥 | Wildfire or forest fire |
|
||
| fire_weather | 🔥 | Elevated fire risk |
|
||
|
||
---
|
||
|
||
## ⚠️ Alerts / Advisories / Statements
|
||
|
||
| Code | Symbol | Meaning |
|
||
|------|:------:|---------|
|
||
| alert | ⚠ | General alert |
|
||
| advisory | ⚡ | Advisory (lower severity) |
|
||
| watch | 👁 | Watch (monitor closely) |
|
||
| warning | ⚠ | Warning (take action) |
|
||
| statement / special_weather_statement | ℹ | General information statement |
|
||
| hazardous_weather | ☣ | Dangerous atmospheric conditions |
|
||
| danger | ☠ | Extreme hazard |
|
||
| ok | ✓ | Normal / no hazard |
|
||
| unknown | ◌ | Unknown or unclassified |
|
||
|
||
---
|
||
|
||
## 🧱 Design Intent
|
||
|
||
- **No branding inside the display.**
|
||
Skyfeed’s presentation is pure data — branding belongs on the backend.
|
||
|
||
- **Colour palette:**
|
||
- Foreground accent: `#00BFFF` (sky blue)
|
||
- Secondary highlight: `#FFD300` (sunny yellow)
|
||
- Warnings: `#FF4040` (alert red)
|
||
- Background: `#000000` (pure black)
|
||
These colours correspond to the *skyfeed_default* theme in `src/ui/theme.py`.
|
||
|
||
- **Typeface:**
|
||
`assets/fonts/Modeseven.ttf` — a Teletext-era monospaced bitmap font.
|
||
|
||
- **Visual tone:**
|
||
“Modern retro” — inspired by Ceefax and MS-DOS, emphasizing clarity and precision.
|
||
|
||
---
|
||
|
||
## 🧩 Developer Reference
|
||
|
||
Each `condition_code` from
|
||
`src/core/weather_client.py → _normalize_condition()`
|
||
maps one-to-one with the `WEATHER_ICONS` dictionary.
|
||
|
||
If a new weather phrase appears in the Environment Canada feeds:
|
||
1. Add the normalized `condition_code` in `weather_client.py`.
|
||
2. Add its Unicode equivalent in `weather_symbols.py`.
|
||
3. Update this document.
|
||
|
||
---
|
||
|
||
**Maintainer:** Leak Technologies
|
||
**Revision:** v1.0.0 (November 2025)
|