XFQInnovation Start a conversation

XFQ/Platforms/WebGSO

Energy · Grid compliance In production

Forecast delivery for large-scale solar, in the grid operator's exact schema.

WebGSO is the service that stands between a 50 MW solar plant and the national grid system operator. It pulls numerical weather forecasts every cycle, stores them as a time series, reshapes them into the operator's required JSON, and serves them over HTTPS as eight documented REST endpoints — while giving the plant owner its own dashboard onto the same data.

8
REST endpoints
15 min
Forecast resolution
4 mo
Longest horizon
5
On-site weather stations
01 — The requirement

A grid operator does not accept "roughly the right numbers".

Under a power purchase agreement, a large-scale solar plant has to tell the system operator what it expects to generate — continuously, at defined horizons, in a defined format, over a defined transport. The specification names the URL paths, the JSON field names, the units, and the plant mnemonic. Anything that does not match is a failed submission.

The plant had a weather-forecast subscription and a database. What it did not have was the service in between, or anyone accountable for keeping that service answering at three in the morning.

A detail that mattered. The operator's rev4 specification is internally inconsistent — one endpoint path capitalises a segment that the others leave lowercase. We implemented the inconsistency exactly as written rather than tidying it up, because the consuming party's document is the one that decides whether a request returns 200. All eight endpoints verified on first deployment.
  • Units reconciled — source data arrives in watts, the operator's schema requires megawatts.
  • Mnemonic corrected — lowercase in every URL path, uppercase in every response body, per spec.
  • Deduplicated ingestion — repeat cycles upsert on timestamp instead of stacking duplicate rows.
  • Horizon gap handled — the forecast provider caps at seven days; days eight and nine are filled from a climatology model rather than left empty.
  • Confirmed in writing — the operator has since confirmed both the plant mnemonic and the timestamp convention in writing, closing the two items that could not be settled from the document alone.

02 — Architecture

One box, two independent consumers.

The compliance feed and the client dashboard read the same database through separate processes. Dashboard traffic can never degrade the feed the grid operator depends on.

WebGSO data flow architecture A PV forecast provider feeds an ingestion service, which writes to a time-series database. A separate API service and a dashboard application both read that database, and both are published through an HTTPS gateway — the API service to the grid system operator, the dashboard to the plant owner. Hardened production server · Singapore region PV forecast provider Ingestion service Time-series database not public API service Dashboard application HTTPS gateway Grid operator 8 REST endpoints Plant owner browser dashboard pull write https
Forecasts land once; two independent readers serve two audiences. The database is never reachable from the public internet.

03 — The feed

Eight endpoints, four horizons, one live data channel.

Every path, field name and casing convention follows the system operator's published specification. The mnemonic in each path is assigned by the operator per plant.

EndpointHorizonResolutionRefreshed
/<PLANT>/Forecast/Rolling6 days rolling15 minutesEvery 30 minutes
/<PLANT>/Forecast/DayAheadNext day15 minutesDaily, 09:00 MYT
/<PLANT>/Forecast/WeekAhead9 days15 minutesWeekly
/<PLANT>/Forecast/FourMonthsAhead1…4Month 1–4HourlyMonthly
/<PLANT>/MMFCurrentLiveContinuous
On honesty in a data feed. Where a horizon is filled from a climatology model rather than a live forecast, we say so — in the documentation, and to the client before submission. A feed that quietly blends modelled and measured data without anyone knowing is a liability, not a feature.

04 — Client dashboard

The plant owner sees the same numbers, in a form they can use.

A separate application on the same box, behind its own subdomain and its own access gate — built so that opening it can never touch the compliance feed.

Rolling forecast with bands

The generation curve plotted against its P10 and P90 confidence band, so an operator can see not just the expectation but the spread around it.

Horizon tabs & KPI cards

Day-ahead and week-ahead views alongside the rolling window, with headline figures for expected peak, daily energy and current conditions.

CSV and XLSX export

Any horizon exported as a spreadsheet for reporting, reconciliation or submission to a third party, straight from the browser.

Meteorological parameters

Live readings from five on-site weather stations — horizontal and inclined irradiance, ambient temperature, wind speed and direction, humidity, pressure and cumulative daily radiation — charted alongside the forecast they are meant to validate.

Access gate

Every route protected, session held in an http-only cookie, isolated behind a single module so it can be swapped for per-user accounts without touching the rest of the app.

Honest empty states

Where no telemetry source exists yet, the dashboard says so rather than inventing a plausible number. Nothing on screen is fabricated.


05 — Operations

Where it runs, and how it stays running.

ConcernHow it is handled
HostingA dedicated server in the Singapore region — lowest latency to a Malaysian grid operator, and fast storage for time-series write and query performance. The host was chosen after reviewing independent uptime data and rejecting a cheaper provider running around 91% availability.
ProvisioningA single script takes a fresh instance to a working stack, so the whole environment can be rebuilt from scratch if it ever has to be: non-root operating account, key-only authentication with password login disabled, firewall, and automated brute-force protection.
ExposureOnly encrypted web traffic and administrative access reach the server. The database is not reachable from the public internet at all, and only the operator-facing endpoint paths are publicly routed.
CertificatesAutomatic issuance and renewal for every hostname. No manual certificate rotation, no expiry surprises.
Data integrityDeduplicating upserts keyed on the designated timestamp, so a re-run of any ingestion cycle corrects rows instead of duplicating them.
DocumentationA build and migration guide covering every decision, the reasoning behind it, and an explicit list of items still to verify before go-live.

WebGSO

Running a plant with a feed to deliver?

If you have a compliance obligation, a forecast subscription and no service in between, that gap is exactly what WebGSO was built to close.