Summary
Migrate the three standalone (non-Explorer) pages from static JSON imports to API-backed data fetching. These are the lowest-risk migrations.
Pages to Migrate
app/(shell)/pricing-nodes/page.tsx — List page
app/(shell)/pricing-nodes/[slug]/page.tsx — Detail page
app/(shell)/power-plants/page.tsx — Already uses client fetch, migrate to SWR + API (SKIP — separate issue)
- Programs page (if it exists in the app directory)
app/(shell)/transmission-lines/page.tsx — List page
Implementation Pattern
- Check feature flag: if 'json', use existing static import; if 'database', use API
- Server Components fetch from API with cache tags
- Client Components use SWR for interactive filtering
- Skeleton loading states during data fetch
- On-demand revalidation via cache tags (NOT time-based ISR)
Acceptance Criteria
Spec ref: Sections 6.1–6.4
Blocked by: #4, #10, #11, #12 (feature flags, API endpoints), #18 (skeletons)
Blocks: Nothing
Summary
Migrate the three standalone (non-Explorer) pages from static JSON imports to API-backed data fetching. These are the lowest-risk migrations.
Pages to Migrate
app/(shell)/pricing-nodes/page.tsx— List pageapp/(shell)/pricing-nodes/[slug]/page.tsx— Detail pageapp/(shell)/power-plants/page.tsx— Already uses client fetch, migrate to SWR + API (SKIP — separate issue)app/(shell)/transmission-lines/page.tsx— List pageImplementation Pattern
Acceptance Criteria
npm run buildpassesSpec ref: Sections 6.1–6.4
Blocked by: #4, #10, #11, #12 (feature flags, API endpoints), #18 (skeletons)
Blocks: Nothing