Live Dashboard Technical Specification
The Observatory Almanac โ Real-Time Data Integration
Version 1.0 | For implementation reference
Overview
The Observatory Almanac Live Dashboard aggregates real-time planetary, environmental, and economic data into a unified display. It is designed to give the reader an immediate sense of the world's current state: the atmosphere, the oceans, the ground beneath us, and the markets humans have built upon it.
This document specifies every data source, API endpoint, authentication method, refresh rate, and display concept needed to build the dashboard.
Architecture Philosophy
- Pull-based updates: Most feeds are polled on a schedule; push/WebSocket where available
- Graceful degradation: Each widget is independent; one failure doesn't break others
- Caching layer: All data cached locally with TTL matching refresh rate
- Rate limit awareness: All API calls designed to stay within free/standard tier limits
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
MODULE 1: ATMOSPHERIC & EARTH SCIENCE
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1.1 NOAA โ Tide Tables
Purpose: Real-time and predicted tide heights for coastal locations
API Base URL:
https://api.tidesandcurrents.noaa.gov/api/prod/datagetter
Authentication: None required (public API)
Example Request โ Water Level (6-minute intervals):
GET https://api.tidesandcurrents.noaa.gov/api/prod/datagetter
?begin_date=20240101
&end_date=20240102
&station=8418150
&product=water_level
&datum=MLLW
&time_zone=GMT
&units=english
&format=json
Example Request โ Tide Predictions:
GET https://api.tidesandcurrents.noaa.gov/api/prod/datagetter
?begin_date=20240101
&end_date=20240102
&station=8418150
&product=predictions
&datum=MLLW
&interval=hilo
&time_zone=GMT
&units=metric
&format=json
Response Format (JSON):
{
"predictions": [
{"t": "2024-01-01 00:00", "v": "1.234", "type": "L"},
{"t": "2024-01-01 06:13", "v": "3.456", "type": "H"}
]
}
Key Parameters:
- station: Station ID (find at https://tidesandcurrents.noaa.gov/stations.html)
- datum: MLLW (Mean Lower Low Water) standard for US
- product: water_level (real-time), predictions (forecasts), currents
Refresh Rate: Every 6 minutes (matches NOAA's own update interval)
Display Concept: - Animated tide curve showing current height and 24h forecast - Visual indicator: rising/falling/high/low - Color-coded safety zones (navigation safe/caution/unsafe for draft depth) - Next high/low time prominently displayed
Station Search API:
GET https://api.tidesandcurrents.noaa.gov/mdapi/prod/webapi/stations.json
?type=tidepredictions
&units=english
1.2 NOAA โ Atmospheric COโ (Mauna Loa Observatory)
Purpose: Real-time atmospheric COโ concentration from the Keeling Curve
Primary Data Source:
https://gml.noaa.gov/webdata/ccgg/trends/co2/co2_daily_mlo.txt
Format: Plain text, space-delimited
# year month day decimal co2(ppm) days 1-day 7-day 31-day
2024 1 1 2024.001 421.47 0 -0.23 0.12 0.34
Alternative JSON-compatible endpoint:
https://global-warming.org/api/co2-api
NOAA GML Direct Access:
https://gml.noaa.gov/aftp/data/trace_gases/co2/flask/surface/co2_mlo_surface-flask_1_ccgg_month.txt
Refresh Rate: Daily (Mauna Loa updates once per day)
Display Concept: - Large prominent readout: current ppm value - Trend line: 1958 (Keeling baseline ~315 ppm) to present - Year-over-year delta highlighted - Contextual marker: pre-industrial baseline (~280 ppm) and climate targets (350 ppm safe zone, 450 ppm 2ยฐC threshold) - Seasonal oscillation visible (northern hemisphere winter = higher due to less plant absorption)
Keeling Curve Historical Archive:
https://scrippsco2.ucsd.edu/data/atmospheric_co2/primary_mlo_co2_record.html
1.3 NOAA โ Satellite Imagery
NOAA GOES (Geostationary Operational Environmental Satellites)
Image Access:
https://cdn.star.nesdis.noaa.gov/GOES16/ABI/CONUS/GEOCOLOR/{timestamp}_GOES16-ABI-CONUS-GEOCOLOR-{resolution}.jpg
Live Image Feed:
https://www.star.nesdis.noaa.gov/GOES/fulldisk.php?sat=G16
Full Disk GeoColor (GOES-16, Americas):
https://cdn.star.nesdis.noaa.gov/GOES16/ABI/FD/GEOCOLOR/latest.jpg
Full Disk (GOES-18, Pacific):
https://cdn.star.nesdis.noaa.gov/GOES18/ABI/FD/GEOCOLOR/latest.jpg
Refresh Rate: Every 10 minutes (full disk), every 5 minutes (CONUS)
Display Concept: - Auto-refreshing Earth image widget - Selectable overlays: storm tracking, fire detection, sea surface temperature - Animation loop: last 24 hours in 10-minute steps
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
MODULE 2: NASA GIBS โ EARTH IMAGERY
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2.1 NASA GIBS (Global Imagery Browse Services)
Purpose: Daily high-resolution Earth satellite imagery from multiple sensors
API Base URL (WMTS):
https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/wmts.cgi
OGC WMTS GetTile Request:
GET https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/wmts.cgi
?SERVICE=WMTS
&REQUEST=GetTile
&VERSION=1.0.0
&LAYER=MODIS_Terra_CorrectedReflectance_TrueColor
&STYLE=default
&TILEMATRIXSET=250m
&TILEMATRIX={zoom}
&TILEROW={row}
&TILECOL={col}
&TIME=2024-01-01
&FORMAT=image/jpeg
Available Layers (selection):
| Layer ID | Description | Resolution |
|----------|-------------|------------|
| MODIS_Terra_CorrectedReflectance_TrueColor | True-color daily global | 250m |
| MODIS_Terra_Thermal_Anomalies_Day | Active fire detections | 1km |
| MODIS_Aqua_SurfaceReflectance_Bands721 | False-color (vegetation) | 500m |
| VIIRS_SNPP_CorrectedReflectance_TrueColor | Daily true-color (NOAA-20) | 375m |
| BlueMarble_NextGeneration | Monthly composite (no clouds) | 500m |
| ASTER_GDEM_Greyscale_Shaded_Relief | Elevation (static) | 15m |
Layer Capabilities (full list):
https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/wmts.cgi?SERVICE=WMTS&REQUEST=GetCapabilities
Authentication: None required (public NASA dataset)
Refresh Rate: Daily (MODIS/VIIRS imagery available ~3-4 hours after satellite pass)
Display Concept: - Slippy map widget (Leaflet.js + GIBS tile layers) - Date slider: browse any day back to 2000 - Layer selector: true color, fire, vegetation index, sea ice - Split-screen: compare any two dates
NASA Worldview (reference implementation):
https://worldview.earthdata.nasa.gov/
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
MODULE 3: USGS โ EARTHQUAKES & RIVERS
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3.1 USGS Earthquake Feeds
Purpose: Real-time seismic activity worldwide
Base URL:
https://earthquake.usgs.gov/earthquakes/feed/v1.0/
GeoJSON Feeds:
# Past hour, all magnitudes
GET https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson
# Past day, magnitude 2.5+
GET https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson
# Past 7 days, magnitude 4.5+
GET https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/4.5_week.geojson
# Past 30 days, significant quakes
GET https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.geojson
Response Format (GeoJSON):
{
"type": "FeatureCollection",
"metadata": {
"generated": 1704067200000,
"count": 42
},
"features": [
{
"type": "Feature",
"properties": {
"mag": 5.3,
"place": "123km NNE of Tonga",
"time": 1704067200000,
"updated": 1704067800000,
"url": "https://earthquake.usgs.gov/earthquakes/eventpage/us7000lmfp",
"detail": "...",
"felt": null,
"cdi": null,
"mmi": 3.2,
"alert": "green",
"status": "reviewed",
"tsunami": 0,
"depth": 10.0
},
"geometry": {
"type": "Point",
"coordinates": [-175.38, -18.97, 10.0]
}
}
]
}
API Query (custom parameters):
GET https://earthquake.usgs.gov/fdsnws/event/1/query
?format=geojson
&starttime=2024-01-01
&endtime=2024-01-02
&minmagnitude=4.0
&orderby=time
Authentication: None required
Refresh Rate: Every 5 minutes (hour feeds), every 15 minutes (day feeds)
Display Concept: - Global map with magnitude-scaled, color-coded dots - Magnitude filter slider - Alert levels: green/yellow/orange/red (PAGER scale) - Tsunami warning flag - 24h activity histogram - Click to expand: depth, fault type, ShakeMap
3.2 USGS River Flow Gauges
Purpose: Real-time streamflow and water level data for US rivers
API Base URL:
https://waterservices.usgs.gov/nwis/iv/
Request โ Current conditions, site list:
GET https://waterservices.usgs.gov/nwis/iv/
?sites=01646500,14211720
¶meterCd=00060,00065
&format=json
Request โ Time series:
GET https://waterservices.usgs.gov/nwis/iv/
?sites=01646500
¶meterCd=00060
&period=P7D
&format=json
Site Discovery:
GET https://waterservices.usgs.gov/nwis/site/
?stateCd=CA
¶meterCd=00060
&siteType=ST
&format=rdb
Flood Stage Data:
GET https://waterservices.usgs.gov/nwis/site/
?sites=01646500
&hasDataTypeCd=iv
&format=json
Authentication: None required
Refresh Rate: Every 15 minutes
Display Concept: - Selectable river/gauge by region - Sparkline: 7-day discharge trend - Flood stage indicator: normal/action/flood/major flood - Map view: all active gauges colored by stage
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
MODULE 4: AIR QUALITY (AirNow)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
4.1 AirNow API
Purpose: Real-time AQI (Air Quality Index) for US locations
API Base URL:
https://www.airnowapi.org/aq/
Authentication: Free API key required
Registration: https://docs.airnowapi.org/account/request/
Current AQI by ZIP code:
GET https://www.airnowapi.org/aq/observation/zipCode/current/
?format=application/json
&zipCode=94102
&distance=25
&API_KEY={YOUR_KEY}
Current AQI by lat/lon:
GET https://www.airnowapi.org/aq/observation/latLong/current/
?format=application/json
&latitude=37.7749
&longitude=-122.4194
&distance=25
&API_KEY={YOUR_KEY}
Forecast (next 2 days):
GET https://www.airnowapi.org/aq/forecast/zipCode/
?format=application/json
&zipCode=94102
&date=2024-01-01
&distance=25
&API_KEY={YOUR_KEY}
Historical:
GET https://www.airnowapi.org/aq/observation/zipCode/historical/
?format=application/json
&zipCode=94102
&date=2024-01-01T00-0000
&distance=25
&API_KEY={YOUR_KEY}
Response Format:
[
{
"DateObserved": "2024-01-01",
"HourObserved": 14,
"LocalTimeZone": "PST",
"ReportingArea": "San Francisco",
"StateCode": "CA",
"Latitude": 37.7749,
"Longitude": -122.4194,
"ParameterName": "PM2.5",
"AQI": 42,
"Category": {
"Number": 1,
"Name": "Good"
}
}
]
AQI Category Scale: | AQI | Category | Color | Health Meaning | |-----|----------|-------|----------------| | 0โ50 | Good | Green | Air quality satisfactory | | 51โ100 | Moderate | Yellow | Sensitive groups may be affected | | 101โ150 | Unhealthy for Sensitive Groups | Orange | General public unaffected | | 151โ200 | Unhealthy | Red | Everyone may experience effects | | 201โ300 | Very Unhealthy | Purple | Health alert | | 301โ500 | Hazardous | Maroon | Emergency conditions |
Refresh Rate: Hourly
Display Concept: - Location-based AQI gauge (large, color-coded) - Pollutant breakdown: PM2.5, PM10, O3, NO2, SO2, CO - 48-hour forecast bar chart - Health recommendation text - Map overlay: regional AQI heatmap
Global AQI Alternative (World Air Quality Index Project):
GET https://api.waqi.info/feed/{city}/
?token={YOUR_TOKEN}
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
MODULE 5: MARKET DATA
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
5.1 Stock Market Data
Recommended Provider: Alpha Vantage
Base URL: https://www.alphavantage.co/query
Free Tier: 25 requests/day, 5 requests/minute
API Key: Register at https://www.alphavantage.co/support/#api-key
Real-time Quote:
GET https://www.alphavantage.co/query
?function=GLOBAL_QUOTE
&symbol=AAPL
&apikey={YOUR_KEY}
Market Indices (using ETF proxies): | Index | Symbol | Exchange | |-------|--------|----------| | NYSE Composite | NYA | NYSE | | NASDAQ Composite | COMP | NASDAQ | | S&P 500 | SPY (ETF) | NYSE | | FTSE 100 (LSE) | ISF.L | London | | Nikkei 225 (TSE) | ^N225 | Tokyo | | Shanghai Composite (SSE) | 000001.SS | Shanghai | | DAX (Frankfurt) | ^GDAXI | Frankfurt | | CAC 40 (Paris) | ^FCHI | Paris |
Response:
{
"Global Quote": {
"01. symbol": "AAPL",
"02. open": "185.23",
"03. high": "186.74",
"04. low": "183.87",
"05. price": "185.92",
"06. volume": "52847362",
"07. latest trading day": "2024-01-02",
"08. previous close": "184.91",
"09. change": "1.01",
"10. change percent": "0.5464%"
}
}
Alternative Free Provider: Yahoo Finance (unofficial)
GET https://query1.finance.yahoo.com/v7/finance/quote
?symbols=^GSPC,^IXIC,^DJI,^FTSE,^N225,000001.SS
Polygon.io (recommended for production):
GET https://api.polygon.io/v2/aggs/ticker/{stocksTicker}/prev
?adjusted=true
&apiKey={YOUR_KEY}
5.2 Cryptocurrency Data
Provider: CoinGecko
Base URL: https://api.coingecko.com/api/v3
Authentication: No key for free tier (50 calls/minute)
Free Key: Register at https://www.coingecko.com/en/api for higher limits
Current Prices (BTC, ETH, SOL):
GET https://api.coingecko.com/api/v3/simple/price
?ids=bitcoin,ethereum,solana
&vs_currencies=usd
&include_24hr_change=true
&include_market_cap=true
&include_24hr_vol=true
Response:
{
"bitcoin": {
"usd": 43521.00,
"usd_24h_change": 2.3,
"usd_market_cap": 852000000000,
"usd_24h_vol": 18500000000
},
"ethereum": {
"usd": 2234.50,
"usd_24h_change": -0.8
},
"solana": {
"usd": 98.32,
"usd_24h_change": 4.1
}
}
Candlestick Data (OHLCV):
GET https://api.coingecko.com/api/v3/coins/bitcoin/ohlc
?vs_currency=usd
&days=30
Exchange Volumes:
GET https://api.coingecko.com/api/v3/exchanges
Refresh Rate: Every 60 seconds (free tier); every 30 seconds (pro)
5.3 Commodities Data
Provider: Commodities API (commodities-api.com)
Base URL: https://commodities-api.com/api
Free Tier: 100 API calls/month
API Key: Register at https://commodities-api.com
Current Commodity Prices:
GET https://commodities-api.com/api/latest
?access_key={YOUR_KEY}
&base=USD
&symbols=GOLD,OIL,WHEAT,COFFEE
Response:
{
"data": {
"timestamp": 1704067200,
"base": "USD",
"rates": {
"GOLD": 0.000510,
"OIL": 0.013310,
"WHEAT": 0.002050,
"COFFEE": 0.002380
}
}
}
Alternative: Alpha Vantage Commodities
GET https://www.alphavantage.co/query
?function=BRENT
&interval=weekly
&apikey={YOUR_KEY}
# Other functions: WTI, NATURAL_GAS, COPPER, ALUMINUM, WHEAT, CORN,
# COTTON, SUGAR, COFFEE
Free Commodity Prices (no key):
# Gold (via Gold API)
GET https://www.goldapi.io/api/XAU/USD
-H "x-access-token: {FREE_KEY}"
# World Bank commodity data (historical, no key)
GET https://api.worldbank.org/v2/en/indicator/PCOMM.BRENT?format=json
Key Commodity Codes: | Commodity | Symbol | Unit | |-----------|--------|------| | Gold | XAU / GOLD | Troy oz (USD) | | Silver | XAG | Troy oz (USD) | | Crude Oil (WTI) | OIL / WTI | Barrel (USD) | | Brent Crude | BRENT | Barrel (USD) | | Natural Gas | NATURAL_GAS | MMBtu (USD) | | Wheat | WHEAT | Bushel (USD) | | Coffee (Arabica) | COFFEE / KC | lb (USD) | | Corn | CORN | Bushel (USD) | | Cotton | COTTON | lb (USD) |
Refresh Rate: Every 15 minutes (markets open), hourly (overnight)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
MODULE 6: DISPLAY ARCHITECTURE
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
6.1 Dashboard Layout Concept
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ THE OBSERVATORY โ LIVE PLANETARY DASHBOARD โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโค
โ ๐ TIDES โ ๐จ AQI โ ๐ก๏ธ COโ (ppm) โ ๐ EARTH NOW โ
โ High: 6.2ft โ SF: 42 GOOD โ 421.47 ppm โ [GIBS Image] โ
โ in 3h 12m โ LA: 85 MOD โ +2.3 vs 2023 โ GOES-16 Disc โ
โ [Tide Curve]โ [Map] โ [Keeling Crv] โ Auto-refresh โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโค
โ ๐ด EARTHQUAKES (Last 24h) โ
โ M5.3 โ Tonga (3h ago) | M4.1 โ Japan (7h ago) | M3.8 โ Chile โ
โ [Global seismic map with magnitude-scaled dots] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๐ MARKETS โ ๐ RIVERS โ
โ S&P500 4,742 +0.8% โฒ โ Mississippi at St. Louis โ
โ NASDAQ 14,831 +1.2% โฒ โ 23,400 cfs โ NORMAL โ
โ LSE/FTSE 7,723 -0.3% โผ โ Colorado at Lees Ferry โ
โ Nikkei 33,288 +0.5% โฒ โ 8,920 cfs โ NORMAL โ
โ SSE/Shanghai 2,887 -0.4% โผ โ โ
โ BTC $43,521 +2.3% โฒ โ โ
โ ETH $2,234 -0.8% โผ โ โ
โ Gold $2,063/oz +0.1% โฒ โ โ
โ Oil (WTI) $74.2/bbl -1.2% โผ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
6.2 Technology Stack Recommendation
Frontend:
- Framework: React or Vue.js
- Maps: Leaflet.js + Leaflet.GIBS plugin for NASA imagery
- Charts: Chart.js or D3.js for tide curves, Keeling Curve
- CSS: Tailwind CSS for responsive layout
Backend/Proxy:
- Node.js Express server
- Redis for caching (TTL matched to each feed's refresh rate)
- Cron scheduler (node-cron) for background fetches
- API key management via environment variables
Deployment:
- Docker container
- Environment: .env file for all API keys
6.3 API Keys Required
| Service | Cost | Key URL |
|---|---|---|
| NOAA Tides | Free | No key needed |
| NOAA COโ | Free | No key needed |
| NASA GIBS | Free | No key needed |
| USGS Earthquakes | Free | No key needed |
| USGS River Gauges | Free | No key needed |
| AirNow | Free | https://docs.airnowapi.org/account/request/ |
| Alpha Vantage (stocks) | Free/Paid | https://www.alphavantage.co/support/#api-key |
| CoinGecko (crypto) | Free/Paid | https://www.coingecko.com/en/api |
| Commodities API | Free/Paid | https://commodities-api.com |
| Gold API | Free | https://www.goldapi.io |
6.4 Rate Limit Management
// Refresh schedule (cron syntax)
const schedules = {
tides: '*/6 * * * *', // Every 6 minutes
co2: '0 12 * * *', // Daily at noon UTC
nasaGIBS: '0 */4 * * *', // Every 4 hours
goesImages: '*/10 * * * *', // Every 10 minutes
earthquakes: '*/5 * * * *', // Every 5 minutes
riverGauges: '*/15 * * * *', // Every 15 minutes
airNow: '0 * * * *', // Hourly
stocks: '*/15 9-16 * * 1-5', // Every 15 min, market hours (M-F)
crypto: '*/1 * * * *', // Every minute
commodities: '*/15 * * * *', // Every 15 minutes
};
This specification is designed to be implementable entirely within free tier API limits for a personal observatory. For commercial use or higher refresh rates, upgrade API tiers accordingly.