eb27486466
Moved HTTP polling helpers upstream into feedkit, and updated to feedkit v0.8.0
ci/woodpecker/push/build-image Pipeline was successful
v0.8.0
2026-03-28 10:02:50 -05:00
de5add59fd
Updated default config.yml to include a commented postgres sink example with pruning enabled
ci/woodpecker/push/build-image Pipeline was successful
2026-03-28 08:04:44 -05:00
356c3be648
Feature addition to support narrative forecast updates from the NWS
ci/woodpecker/push/build-image Pipeline was successful
2026-03-27 16:07:12 -05:00
dbaebbbd7a
Updates to the nws forecast source and normalizer to separate code specific to hourly forecasts and prepare for upcoming feature addition of daily and narrative forecasts
ci/woodpecker/push/build-image Pipeline was successful
2026-03-27 12:58:23 -05:00
88d5727a84
Simplified the forecast schema
ci/woodpecker/push/build-image Pipeline was successful
2026-03-26 21:35:08 -05:00
129cebd94d
Updated the normalized observation schema to remove duplicate and/or unnecessary fields
ci/woodpecker/push/build-image Pipeline was successful
2026-03-17 11:04:51 -05:00
e42f2bc9de
Remove incorrect 'internal/' prefix from model package file header comments
2026-03-17 09:46:39 -05:00
9ddcf5e0df
Document the PostgreSQL schema contract in doc.go
ci/woodpecker/push/build-image Pipeline was successful
2026-03-17 09:33:07 -05:00
d0b58a4734
Updates to track feedkit v0.7.2 and to add a dedupe processor
ci/woodpecker/push/build-image Pipeline was successful
v0.7.2
2026-03-16 18:35:44 -05:00
6cd823f528
Update go.mod
ci/woodpecker/push/build-image Pipeline was successful
2026-03-16 15:37:31 -05:00
84da2bb689
Added a postgres sink implementation.
ci/woodpecker/push/build-image Pipeline failed
v0.7.1
2026-03-16 15:32:46 -05:00
859ee9dd5c
Updated go.sum
ci/woodpecker/push/build-image Pipeline was successful
2026-03-16 13:37:49 -05:00
ea113e2dcc
Updated processor/normalizer wiring to track Feedkit v0.7.0
ci/woodpecker/push/build-image Pipeline failed
v0.7.0
2026-03-16 13:35:51 -05:00
38bc162918
Updated go.sum
ci/woodpecker/push/build-image Pipeline was successful
2026-03-15 19:26:51 -05:00
eae9568afe
Updated source configuration to track Feedkit v0.6.0
ci/woodpecker/push/build-image Pipeline failed
v0.6.0
2026-03-15 19:22:57 -05:00
f464592c56
Updates to accommodate the new upstream version of feedkit (v0.5.0), which now supports both polling sources and streaming sources.
ci/woodpecker/push/build-image Pipeline was successful
v0.5.2
2026-02-08 15:05:53 -06:00
123e8ff763
Moved the standards package out of internal/ so it can be imported by downstream consumers.
ci/woodpecker/push/build-image Pipeline was successful
v0.5.1
2026-02-08 09:15:07 -06:00
5923592b53
Moved the weatherfeeder model out of internal/ so that downstream consumers can import it directly.
ci/woodpecker/push/build-image Pipeline was successful
v0.5.0
2026-02-08 08:56:16 -06:00
c96a6bb78b
Remove Go test files from .dockerignore; this will enable the CI system to run tests before building.
2026-02-08 08:55:35 -06:00
cff8c5f593
Merged SCHEMA.md into API.md and made some tweaks to ensure consistency with the underlying domain model.
ci/woodpecker/push/build-image Pipeline was successful
2026-02-07 19:36:50 -06:00
190420e908
Added a SCHEMA.md with espress documentation of the JSON output schemas emitted by weatherfeeder.
ci/woodpecker/push/build-image Pipeline was successful
2026-02-07 17:26:07 -06:00
9663fdfc43
Updated main.go to register the postgres and NATS sinks in addition to the stdout sink.
ci/woodpecker/push/build-image Pipeline was successful
2026-02-07 11:57:54 -06:00
ffd4dfa76d
Updated feedkit dependency to v0.4.1.
ci/woodpecker/manual/build-image Pipeline was successful
2026-02-07 11:37:53 -06:00
d858bc1f31
Updated Dockerfile and Woodpecker pipeline to use harbor.maximumdirect.net proxy cache for upstream images.
ci/woodpecker/manual/build-image Pipeline was successful
ci/woodpecker/push/build-image Pipeline was successful
2026-02-01 19:39:55 -06:00
2a88c3c5f3
Updated the Woodpecker pipeline to utilize caching.
ci/woodpecker/manual/build-image Pipeline was successful
2026-02-01 19:04:22 -06:00
33c35b5f4a
Update Dockerfile to streamline the weatherfeeder user creation.
ci/woodpecker/manual/build-image Pipeline was successful
2026-02-01 18:17:12 -06:00
df3f42ef30
Updated the Dockerfile to reflect best practices; removed the dropreplace lines after updates to go.mod.
ci/woodpecker/manual/build-image Pipeline was successful
2026-02-01 16:59:34 -06:00
e86d4a02e0
Added a go mod tidy step to the Dockerfile build.
ci/woodpecker/manual/build-image Pipeline was successful
2026-02-01 10:15:50 -06:00
ba95371418
Added a second dropreplace step for ejr/feedkit.
ci/woodpecker/manual/build-image Pipeline failed
2026-02-01 10:10:53 -06:00
5a92fc0401
Fixed a bug in the Dockerfile with respect to the location of the dropreplace for ejr/feedkit.
ci/woodpecker/manual/build-image Pipeline failed
2026-02-01 10:01:02 -06:00
f522840fed
Updated go.mod to require feedkit v0.4.0.
ci/woodpecker/manual/build-image Pipeline failed
2026-02-01 09:57:10 -06:00
a46cbe17d1
Updated the Dockerfile to drop the ejr/feedkit replacement and to run go test before building.
ci/woodpecker/manual/build-image Pipeline failed
2026-02-01 09:47:17 -06:00
7b8b3b98f2
Added a Dockerfile and completely refactored the Woodpecker pipeline.
ci/woodpecker/manual/build-image Pipeline failed
2026-02-01 09:38:26 -06:00
4600ca053b
woodpecker: Update pipeline to allow manual triggering.
2026-02-01 08:10:24 -06:00
88d2385576
woodpecker: allow manual pipeline triggering.
2026-02-01 07:33:01 -06:00
6cdbb29215
woodpecker: refactor pipeline to use kaniko.
2026-02-01 07:22:28 -06:00
62464f449e
More woodpecker changes.
2026-01-31 13:56:12 -06:00
db8c66832f
Removed privileged: true from the Woodpecker pipeline.
2026-01-31 13:53:27 -06:00
062b12c44f
Add CI/CD pipeline configuration for building and publishing weatherfeeder.
2026-01-31 13:50:09 -06:00
da0231b20f
Add day/night estimation for NWS observations based on solar elevation and update observation model.
2026-01-22 23:15:17 -06:00
c675045013
Updated documentation and added API.md to document the stable external wire format.
2026-01-17 17:39:18 -06:00
b4a67e208c
Updated model and normalizers to map provider “feels like” fields into a single ApparentTemperatureC field.
2026-01-17 10:36:19 -06:00
c12cf91115
normalizers: implemented openmeteo forecast normalizer.
2026-01-17 10:16:50 -06:00
b47f1b2051
sources: added an OpenMeteo forecast source.
2026-01-17 08:00:23 -06:00
b8804d32d2
refactor(normalizers): deduplicate synthetic station ID generation
...
- Add common SynthStationID helpers for coordinate-based providers
- Use shared helper for Open-Meteo and OpenWeather station ID synthesis
- Require both lat/lon when generating synthetic IDs to avoid misleading defaults
- Remove unused Open-Meteo normalizer wrapper code
This reduces cross-provider duplication while keeping provider-specific
mapping logic explicit and readable.
2026-01-16 22:13:44 -06:00
00e811f8f7
normalizers/nws: add NWS alerts normalizer and canonical alert mapping
...
- Introduce AlertsNormalizer to convert Raw NWS Alerts (SchemaRawNWSAlertsV1)
into canonical WeatherAlert runs (SchemaWeatherAlertV1)
- Add minimal NWS alerts response/types to support GeoJSON FeatureCollection parsing
- Map NWS alert properties (event, headline, severity, timing, area, references)
into model.WeatherAlert with best-effort timestamp handling
- Establish clear AsOf / EffectiveAt policy for alert runs to support stable
deduplication and snapshot semantics
- Register the new alerts normalizer alongside existing NWS observation and
forecast normalizers
2026-01-16 21:40:20 -06:00
2eb2d4b90f
feat(nws, normalizers): add NWS hourly forecast normalization and enforce canonical float rounding
...
- Implement full NWS hourly forecast normalizer (raw.nws.hourly.forecast.v1 → weather.forecast.v1)
- Add GeoJSON forecast types and helpers for NWS gridpoint hourly payloads
- Normalize temperatures, winds, humidity, PoP, and infer WMO condition codes from forecast text/icons
- Treat forecast IssuedAt as EffectiveAt for stable, dedupe-friendly event IDs
- Introduce project-wide float rounding at normalization finalization
- Round all float values in canonical payloads to 2 decimal places
- Apply consistently across pointers, slices, maps, and nested structs
- Preserve opaque structs (e.g., time.Time) unchanged
- Add SchemaRawNWSHourlyForecastV1 and align schema matching/comments
- Clean up NWS helper organization and comments
- Update documentation to reflect numeric wire-format and normalization policies
This establishes a complete, deterministic hourly forecast pipeline for NWS
and improves JSON output stability across all canonical weather schemas.
2026-01-16 10:28:32 -06:00
0fcc536885
Updates in preparation for adding forecast sources.
2026-01-16 00:04:37 -06:00
e10ba804ca
model: add explicit JSON tags and document canonical payload contract
...
Add lowerCamelCase JSON tags to canonical model types (observation, forecast,
alert) to stabilize the emitted wire format and make payload structure explicit
for downstream sinks.
Introduce internal/model/doc.go to document these structs as versioned,
schema-governed payloads and clarify compatibility expectations (additive
changes preferred; breaking changes require schema bumps).
No functional behavior changes; this formalizes the canonical output contract
ahead of additional sinks and consumers.
2026-01-15 22:39:37 -06:00
f13f43cf56
refactor(providers): centralize provider-specific parsing and invariants
...
- Introduce internal/providers/nws with shared timestamp parsing used by both
NWS sources and normalizers
- Migrate NWS observation source + normalizer to use the shared provider helper
for consistent RFC3339/RFC3339Nano handling
- Introduce internal/providers/openweather with a shared URL invariant helper
enforcing units=metric
- Remove duplicated OpenWeather URL validation logic from the observation source
- Align provider layering: move provider “contract/quirk” logic out of
normalizers and into internal/providers
- Update normalizer and standards documentation to clearly distinguish:
provider helpers (internal/providers) vs canonical mapping logic
(internal/normalizers)
This refactor reduces duplication between sources and normalizers, clarifies
layering boundaries, and establishes a scalable pattern for future forecast
and alert implementations.
2026-01-15 20:40:53 -06:00