Joey Eamigh
79850a61be
cleanup
2026-02-11 22:03:19 -05:00
Joey Eamigh
d8478ace96
fixups and such
2026-02-11 21:35:03 -05:00
Joey Eamigh
ad1a6792f5
phase 8: UI/UX overhaul — layout, charts, map, data freshness
...
- Fix ticker tape CLS with skeleton loader and fixed height
- Add Inter font, max-width container, responsive dvh units
- Hero metrics: trend deltas, per-metric sparkline colors, 3+2 grid
- GPU calculator: step=100 slider + text input, PUE factor, region comparison bars
- Grid stress: replace misleading arc gauges with demand status bars
- Demand summary: expand to 4-metric highlights grid
- Charts: responsive heights, ISO/non-ISO toggle, correlation R² + trend line
- Map: US-wide default view, marker clustering, enriched region panels, zoom controls
- Fix NYISO polygon (NYC), MISO polygon (Michigan), MISO south (MS/LA)
- Add automated ingestion via instrumentation.ts
- Add data freshness indicator in footer
- Fix backfill start date to 2019-01-01 (EIA RTO data availability)
2026-02-11 19:59:01 -05:00
Joey Eamigh
9e83cfead3
fix: add DUKE, SOCO, TVA centroids for floating price labels
2026-02-11 16:22:46 -05:00
Joey Eamigh
8f99f6535e
phase 7: full US coverage — grid regions, datacenters, power plants, backfill, chart perf
...
- Add 7 new grid regions (BPA, DUKE, SOCO, TVA, FPC, WAPA, NWMT) to cover entire continental US
- Expand datacenters from 108 to 292 facilities across 39 operators
- Add EIA power plant pipeline: download script, 3,546 plants >= 50 MW with diamond map markers
- Rewrite backfill script for 10-year data (2015-07-01) with quarterly/monthly chunking, 3-region parallelism, resumability
- Add materialized views (daily/weekly) with server-side granularity selection for chart performance
- Fix map UX: z-index tooltips, disable POI clicks, move legend via MapControl
2026-02-11 16:08:06 -05:00
Joey Eamigh
3251e30a2e
fix: use direct hex color for correlation chart axis labels
...
CSS variable hsl(var(--muted-foreground)) doesn't resolve in SVG
context. Use #a1a1aa (zinc-400) directly for reliable visibility
on dark background.
2026-02-11 14:48:26 -05:00
Joey Eamigh
564d212148
phase 6: post-review enhancements — data, map UX, charts, navigation
...
Data:
- Expand datacenter inventory from 38 to 108 facilities
- Add 14 North Carolina datacenters (Apple, Google, AWS, Microsoft, etc.)
- Add missing operators (Cloudflare, Switch, Vantage, Apple, Aligned, Iron Mountain)
- Fill geographic gaps (Southeast, Northwest, Midwest)
Map UX:
- Dark mode via ColorScheme.DARK, hide all default UI controls
- Center on Chapel Hill, NC (lat 35.91, lng -79.06) at zoom 6
- New map legend component (price gradient, marker scale, pulse/glow key)
- Floating region price labels via AdvancedMarker at region centroids
- Tune breathing animation: 8s period, only stressed regions, 5 FPS
- Enhanced markers: capacity labels on 200+ MW, status-based styling
Charts:
- Fix generation chart timestamp duplication (use epoch ms dataKey)
- Fix correlation chart black-on-black axis labels
- Context-aware tick formatting (time-only for 24h, date for longer ranges)
GPU Calculator:
- Default to B200 (1,000W), add R200 Rubin (1,800W)
Navigation:
- Granular Suspense boundaries on all 5 pages
- Extract data-fetching into async Server Components per section
- Page shells render instantly, sections stream in independently
2026-02-11 14:44:46 -05:00
Joey Eamigh
deb1cdc527
spec: add Phase 6 post-review enhancements
...
Data coverage expansion (80-120 DCs, power plants, SE grid regions,
2yr backfill), map UX overhaul (dark mode, legend, floating labels,
Chapel Hill center), chart fixes, GPU calculator update, granular
Suspense boundaries for navigation performance.
2026-02-11 14:37:43 -05:00
Joey Eamigh
3edb69848d
fix: region overlay visibility, ambient glow breathing, pulsing threshold
...
- Fix fillColor/fillOpacity conflict: return separate RGB string and
opacity from priceToColor() instead of rgba with embedded alpha
- Implement ambient region glow via setInterval + overrideStyle with
sine-wave opacity oscillation (faster/brighter for higher prices)
- Lower pulsing marker threshold from 10% to 3% for demand-varied prices
2026-02-11 13:36:21 -05:00
Joey Eamigh
224a9046fc
fix: add "use cache" directives, fix server-client icon serialization
...
- Add Next.js 16 "use cache" with cacheLife profiles: seedData (1h),
prices (5min), demand (5min), commodities (30min), ticker (1min),
alerts (2min)
- Add cacheTag for parameterized server actions
- Fix MetricCard icon prop: pass rendered JSX instead of component
references across the server-client boundary
2026-02-11 13:29:47 -05:00
Joey Eamigh
7a1bbca339
fix: comprehensive review fixes — real price data, missing components, SQL bugs, security
...
- Replace $0 electricity prices with real EIA retail-sales data (IND sector)
with demand-based hourly variation (0.8x-1.2x)
- Add sparkline component and alerts feed to dashboard home
- Add animated number transitions to hero metric cards
- Fix ticker tape price direction (green/red arrows with % change)
- Fix AI milestone annotation alignment on price charts
- Fix SQL cartesian products in getDemandByRegion and getRegionPriceHeatmap
using CTEs for independent aggregation
- Add unique composite constraints to prevent duplicate data
- Add bearer token auth to ingestion API routes
- Add 30s fetch timeouts to EIA and FRED API clients
- Add regionCode validation in server actions
- Fix docker-compose: localhost-only port binding, correct volume path
- Fix seed script to preserve ingested time-series data
2026-02-11 13:23:21 -05:00
Joey Eamigh
a954e89b47
fix: map EIA fuel type codes to display names in generation chart
...
EIA stores fuel types as codes (NG, NUC, WND, SUN, COL, WAT) but
the chart expected display names (gas, nuclear, wind, solar, coal,
hydro). All data was falling through to "other". Added EIA_FUEL_MAP
lookup in pivotGenerationData to resolve codes before categorizing.
2026-02-11 05:50:09 -05:00
Joey Eamigh
f053a3a53b
final QA: add error boundaries, run backfill
...
Add error.tsx files for all route segments (/, /map, /trends,
/demand, /generation) with retry buttons. Backfill script ran
successfully: ~30K electricity demand records, ~253K generation
mix records, and 233 commodity price records across all 7 regions.
2026-02-11 05:45:26 -05:00
Joey Eamigh
f05dc6fa68
final QA: code review fixes
...
Remove dead code per project rules:
- Delete unused ErrorBoundary component (never imported)
- Delete unused AmbientGlow component (never imported)
- Remove unused eiaPaginationSchema export
- Remove unused SuperJSON re-export
2026-02-11 05:40:39 -05:00
Joey Eamigh
7d20d4b484
phase 5: polish & real-time candy — ticker tape, GPU calculator, grid gauges, pulsing markers, toasts, auto-refresh, loading states, responsive nav
2026-02-11 05:33:23 -05:00
Joey Eamigh
2dddbe78cb
phase 4: charts & analysis — price trends, demand analysis, generation mix, commodity overlay, correlation view
2026-02-11 05:21:25 -05:00
Joey Eamigh
c33257092d
phase 3: dashboard UI — layout, map, markers, region overlays, interactions
2026-02-11 04:57:58 -05:00
Joey Eamigh
64f7099603
phase 2: data layer — EIA/FRED clients, server actions, ingestion routes, backfill
2026-02-11 04:41:57 -05:00
Joey Eamigh
6d7d2d966b
phase 1: foundation — next.js 16 scaffold, prisma schema, docker compose, seed data
2026-02-11 04:21:20 -05:00
Joey Eamigh
1e9b287036
add ralph loop plugin
2026-02-11 04:01:16 -05:00
Joey Eamigh
efb1eddf7a
final spec.
2026-02-11 03:57:23 -05:00
Joey Eamigh
7437f1b96b
more spec work
2026-02-11 03:39:59 -05:00
Joey Eamigh
40ef943d24
initial setup commit
2026-02-11 03:33:58 -05:00