35 lines
1.2 KiB
Markdown
35 lines
1.2 KiB
Markdown
# weatherfeeder
|
|
|
|
weatherfeeder is a small daemon that polls weather observations, forecasts, and alerts from multiple upstream
|
|
providers, normalizes them into a provider-independent format, and emits them to a sink.
|
|
|
|
Today, the only implemented sink is `stdout`, which prints JSON-encoded events.
|
|
|
|
## What weatherfeeder emits
|
|
|
|
weatherfeeder emits **feed events** encoded as JSON. Each event includes a schema identifier and a payload.
|
|
Downstream consumers should key off the `schema` value and decode the `payload` accordingly.
|
|
|
|
Canonical domain schemas emitted after normalization:
|
|
|
|
- `weather.observation.v1` → `WeatherObservation`
|
|
- `weather.forecast.v1` → `WeatherForecastRun`
|
|
- `weather.alert.v1` → `WeatherAlertRun`
|
|
|
|
For the complete wire contract (event envelope + payload schemas, fields, units, and compatibility rules), see:
|
|
|
|
- **API.md**
|
|
|
|
## Upstream providers (current MVP)
|
|
|
|
- NWS: observations, hourly forecasts, alerts
|
|
- Open-Meteo: observations, hourly forecasts
|
|
- OpenWeather: observations
|
|
|
|
## Versioning & compatibility
|
|
|
|
The JSON field names on canonical payload types are treated as part of the wire contract.
|
|
Additive changes are preferred. Renames/removals require a schema version bump.
|
|
|
|
See **API.md** for details.
|