Voltstack

Documentation

What the product does today, written from the codebase rather than the pitch. If something below is wrong, it is out of date rather than aspirational: file it against this page.

Overview

Voltstack is a workspace for building analytics dashboards for European power and gas markets. A workspace is a grid of widgets: price charts, storage monitors, constraint tables, tickers. You add widgets from a palette, arrange them on a canvas, and the layout persists to your account.

The product is aimed at desks that would otherwise be pulling ENTSO-E, GIE, and Elexon data into spreadsheets by hand. Some of that pulling is done for you already; some widgets are still illustrative placeholders. The next section explains how to tell which is which, because that distinction matters more than anything else on this page.

Widgets and data

Widgets fall into three rough groups today:

  • Live feeds: day-ahead power prices, cross-border flows, generation mix, gas storage (GIE AGSI+/ALSI+), gas pipeline flows (ENTSOG), GB balancing and system price (Elexon), weather (Open-Meteo), negative-price radar, and event/constraint feeds (JAO flow-based constraints, REMIT UMM messages, German redispatch). These read from a database that a background worker keeps refreshed from the real upstream APIs, not from the browser calling them live.
  • Partially live: a few widgets bind some rows or series to real data and fill the rest with a modeled overlay (for example a historical storage band that isn't itself a live feed). Where that happens the widget says so in its own label.
  • Illustrative: forward curves, hub basis spreads, LNG arbitrage, carbon spot, merit-order curves, and implied volatility have no free public feed behind them (they are licensed instruments from ICE, EEX, or Platts). These render generated numbers so you can see the widget shape, and they carry a badge so nobody mistakes them for real quotes.

For the exact, currently-registered feed list and how fresh each one is right now, see /status, a public page that reads its numbers from the same health check the app itself uses. That page is the source of truth; a fixed table here would go stale as feeds are added.

Data honesty

Every widget title bar carries a small dot that tells you what you're looking at:

  • Connected, live data, fresh.
  • Stale, a live feed whose last update is older than expected.
  • Simulated, no live path, or a live feed that fell back; the widget also shows a violet SIM pill.
  • Disconnected, a feed that should be live and isn't answering.

Live widgets also show a "Data age" line: how long ago the value you're looking at was actually fetched from the upstream source, not just when the page last redrew. Upstream publication schedules vary a lot (some feeds settle same-day, some lag by weeks), so a widget being a day old can be entirely normal rather than broken. The age is there so you can judge that for yourself instead of guessing.

Workspaces

A workspace is a saved arrangement of widgets. You can rename it, create as many as you want, and delete the ones you don't. Workspaces persist to your account (not just the browser you're on), and past versions are kept so you can restore an earlier layout if you rearrange something you regret.

Sharing and roles

Every member of your organization has one of three roles:

  • Admin: everything Editor can do, plus inviting and removing members and changing roles.
  • Editor: create, edit, rename, and delete workspaces, and toggle whether a workspace is shared with the team.
  • Viewer: read-only. Mutation attempts are rejected by the server, not just hidden in the UI.

A workspace is private to its owner by default; the Share toggle in the top bar makes it visible to every member of the organization instead. Admins invite people by email from the Team panel; every role change and every denied write is recorded in an audit log.

CSV export

Every widget's overflow menu (the ⋮ in its title bar) has an Export CSV option that downloads whatever that widget is currently showing. For pulling more history than one widget displays, there is also a server-side export endpoint (/api/export/market) that returns CSV for a given feed, filtered by series, category, or date range. CSV only for now; there is no Excel export.

Getting started

Signing up creates your organization and a database provisioned for it automatically, no separate setup step. From there you land in a default workspace with a starter set of European power widgets already on the canvas. A short guided tour runs the first time you open a workspace; you can run it again from Help in the sidebar.

Plan structure and trial terms are on the pricing page. For the live status of every data feed, see /status.