✳ HELIOSReturn to observatory ↗

KNOW YOUR SIGNAL

Beautifully visualized.
Carefully interpreted.

HELIOS connects public space weather observations to an interactive three-dimensional story. The distinction between a measurement, a model and an illustration is part of the experience.

What is live?

The Fastify backend polls NOAA SWPC JSON feeds every 60 seconds. The dashboard refreshes once per minute while the page is visible. A live label requires usable, fresh X-ray, planetary Kp, solar wind speed, interplanetary Bz and aurora inputs. Each feed retains its own observation time. The cadence of an instrument is separate from the app's refresh interval.

If only some observations are fresh, the dashboard is labelled partial. Previously received readings become delayed when the upstream fetch fails or their source times exceed the freshness window. If no observation can be retrieved, the app clearly shows an illustrative scenario. It never turns demo readings into live alerts.

Solar activity

GOES primary X-ray observations use the 0.1–0.8 nm channel, in watts per square metre. The chart contains up to six hours, with one-, three- and six-hour views. Class equivalents A, B, C, M and X express the observed flux; the highest point in this series is not a verified flare catalogue entry. A flare alone does not establish that a coronal mass ejection is Earth-directed.

Source: NOAA GOES X-ray flux documentation.

Geomagnetic conditions

Planetary Kp is a geomagnetic activity index. The G-scale mapping in HELIOS follows the published NOAA thresholds: Kp 5, 6, 7, 8 and 9 correspond to G1 through G5. A Kp below 5 is below the G1 threshold, not proof that every local system is unaffected. The displayed solar wind speed is upstream at L1, and Bz is the interplanetary field's GSM z component, in nanotesla.

Source: NOAA space weather scales.

Aurora model intensity

The location selector finds the nearest retained OVATION grid cell, using wrapped longitude and latitude-weighted distance. The grid is thinned to reduce transfer size. A missing nearby cell is shown as unavailable. Its intensity value is not a local probability of seeing an aurora. Daylight, clouds, the horizon, and model uncertainty affect what a person can actually see.

The three-dimensional auroral curtain is an artistic schematic. Its shape does not reproduce the current forecast grid. The model readout and its forecast timestamp are the data-backed part of this view.

Source: NOAA OVATION forecast documentation.

Satellite risk context

Orbital paths and satellite objects are schematic. HELIOS does not ingest orbital elements, propagate real spacecraft positions, or assess an individual vehicle. The low, elevated and high labels are qualitative context based on planetary Kp thresholds. They are not probabilities, charging measurements, radiation-dose estimates or mission recommendations. Operational analysis needs additional telemetry and validated models.

Alerts and your privacy

Threshold preferences are saved in this browser's local storage, not in an account. Rules only notify on fresh, complete live data while the page is open. Permission-based desktop notifications are optional. HELIOS does not provide background push, email or SMS delivery. Received NOAA bulletins are shown separately from your own threshold rules. Use the test-alert control to preview the interface; it is always marked as a test.

No geolocation is requested. Location selection uses a short list of public city coordinates. Downloaded snapshots include the data source and observation timestamps.

Backend, history and deployment

The separate Node/Fastify service retrieves and normalizes the upstream feeds. Postgres stores deduplicated live or partially live observation snapshots using a JSONB schema. Without a configured, reachable database, the API reports memory storage rather than claiming persistence. Demo data is never stored as a real observation. Database migrations are explicit.

SpinBuild runs the Astro frontend and Fastify API together, using a same-origin /v1 proxy. Postgres uses the managed database connection when available. If the frontend is exported to a standalone static host, deploy the backend separately and set PUBLIC_API_URL before building. Unavailable upstream feeds are always shown as labelled demo or delayed observations. The repository README contains the setup commands.

Rendering and accessibility

The 3D scene is loaded separately from the main interface. Its renderer caps resolution and frame rate on mobile, pauses when the tab is hidden, and respects the system's reduced-motion preference. A pause control stops ambient animation while scroll-driven scene changes remain available. Data, chart labels, tables and settings do not depend on WebGL being available.

← Back to the observatory
Edit with SpinBuild