Skip to content

About

Search generator interconnection queue projects across US ISOs/RTOs - the public list of power projects waiting to connect to the grid.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Interconnection Queue Tracker

Search generator interconnection queue projects across US ISOs/RTOs: the public list of power projects waiting to connect to the grid.

Open the live dashboard — explore the interface without setting up a database or downloading the feeds.

Interconnection queue dashboard with market filters and project summaries

Interface captured September 4, 2026. Market coverage and totals reflect the latest available source reports.

Engineering overview

The Next.js/TypeScript interface reads project data from PostgreSQL. Python workers normalize the public ISO reports, and GitHub Actions schedules the daily ingestion. The ERCOT large-load panel uses a separate snapshot from the Kardashev data service.

For a quick code walkthrough, start with the application routes, UI components, and the ingestion service. Setup and deployment instructions follow below.

Supported feed integrations: ERCOT, MISO, PJM, CAISO, SPP, NYISO, ISO-NE, each from that market’s public queue report, fetched directly from each ISO’s public data source. Dashboard coverage depends on the latest successful ingestion; a supported integration does not guarantee currently available rows.


Project layout

interconnection-queue-tracker/
├── web/                  # Next.js app (deploy this on Railway)
│   ├── app/              # routes, layout, metadata
│   ├── components/       # UI
│   ├── data/             # curated fallback JSON
│   └── lib/              # DB access, analytics, markets
├── services/fetcher/     # Python job: loads ISO feeds into Postgres
├── scripts/              # local fetch helper
├── docker-compose.yml
├── Dockerfile.web
└── .github/workflows/    # daily fetch CI

Quick start

docker compose up -d postgres

cd web && cp .env.local.example .env.local && npm install && npm run dev

# Load all ISO queues (~2-5 min)
docker compose --profile fetch run --rm fetcher

Open http://localhost:3000

Fetch specific ISOs only

FETCH_MARKETS=PJM,CAISO docker compose --profile fetch run --rm fetcher

Or locally without Docker:

./scripts/fetch-queues.sh

Stack

Layer Tech
UI Next.js 16, Tailwind v4
Data Postgres (queue_projects, queue_market_snapshots)
Fetcher Python (direct ISO feeds)

The web app reads Postgres directly (no separate API service). The ERCOT large-load panel is the exception: it fetches a pre-built snapshot from kardashev-data over HTTP.


Supported markets

ISO/RTO Source
ERCOT GIS Report
MISO GI interactive queue
PJM Public interconnection queue export
CAISO Public queue report
SPP Generation interconnection summary
NYISO Interconnection queue
ISO-NE Interconnection queue

Not yet: IESO, AESO


Environment

Web (web/.env.local)

Variable Example Purpose
DATABASE_URL postgres://queue:queue@127.0.0.1:5434/queue Live queue data
CURATED_PATH ./data/curated.json Fallback signals
NEXT_PUBLIC_SITE_URL https://your-app.up.railway.app OG metadata
KARDASHEV_DATA_URL https://data.kardashevlabs.org Optional. Source for the ERCOT large-load panel; defaults to the hosted kardashev-data service if unset.

Fetcher (services/fetcher)

Variable Purpose
DATABASE_URL Required. Postgres connection string.
FETCH_MARKETS Optional. Comma-separated subset of markets to fetch (default: all seven).
PJM_QUEUE_SUBSCRIPTION_KEY Required for PJM. Public subscription key used by PJM's interconnection queue web app (not a member API key). Without it, PJM is skipped.

Production

Railway (web only)

  1. Create a Railway project with PostgreSQL + a web service.
  2. Set the web service root directory to web.
  3. Link Postgres → injects DATABASE_URL.
  4. Set NEXT_PUBLIC_SITE_URL to your Railway URL.
  5. Add GitHub secrets DATABASE_URL (Railway Postgres public URL) and PJM_QUEUE_SUBSCRIPTION_KEY for the daily fetch workflow (without the PJM key, PJM is skipped).
  6. Run the fetcher once before launch (Actions → “Fetch ISO queues” → Run workflow).

Docker

docker compose up -d postgres web
docker compose --profile fetch run --rm fetcher

Scheduled fetch (daily)

GitHub Actions runs at 06:00 UTC; needs repo secret DATABASE_URL.

Docker cron (self-hosted):

docker compose --profile cron up -d fetcher-cron

Launch checklist

  • Postgres running with DATABASE_URL set on web
  • Fetcher has populated queue_projects at least once
  • NEXT_PUBLIC_SITE_URL matches your public URL
  • npm run lint and npm run build pass in web/

About

Search generator interconnection queue projects across US ISOs/RTOs - the public list of power projects waiting to connect to the grid.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages