A dashboard is a display over a feed you do not control. Its two failure modes are showing yesterday's figures and hammering an API into a rate limit.
Every design decision follows from the numbers arriving from an upstream service with its own limits and its own bad days.
Fetching upstream data during a page load ties your response time to somebody else's API and multiplies your call volume by your traffic. Refreshes run on a timer instead.
A thousand people viewing the same chart should produce one upstream request, not a thousand. That is the difference between a working integration and a revoked key.
Upstream outages are certain. A dashboard should show the most recent figure with its timestamp rather than an error or a blank chart.
Sending raw series to the browser and drawing them there is slow on the devices that most often view dashboards on the move.
Dashboards accumulate time-series data indefinitely. Those tables are indexed by time range because that is the only way anybody queries them.
A dashboard's reliability is the product of your own and every feed it depends on. The only way to improve that is to stop depending on the feed being up at the moment of a page load.
The measurement worth having is page speed while the upstream API is slow, because that is the condition the design exists for.
Each row separates your page's availability from the availability of the data it displays.
| Setting | What we do | Why |
|---|---|---|
| Upstream fetching | Scheduled refresh rather than fetch-on-request | Calling an API during a page load means your response time is theirs and your call volume is your traffic, which is how integrations get rate limited. |
| Fetch sharing | One upstream request per interval regardless of visitors | A thousand viewers of the same chart producing a thousand upstream calls is the behaviour that gets an API key revoked rather than throttled. |
| Failure behaviour | Last-known value shown with its timestamp | Upstream outages are inevitable, and a stale number honestly labelled is more useful than an error or an empty chart. |
| Rendering split | Series prepared server-side rather than shipped raw | Dashboards are often opened on phones, where drawing a large series in the browser costs more than sending the finished view. |
| Time-series indexing | Indexed by time range | Historical data accumulates forever and is only ever queried as a window, so an index on anything else is an index nobody uses. |
Every plan includes free migration, daily backups, SSL and 24/7 support.
Move the dashboard across — migration is free, refresh schedule reviewed.