Open-source analytics for UPPCL SMART meters — prepaid and postpaid. Your credentials are never stored or logged. The entire codebase is open — read every line yourself.
The official UPPCL SMART portal stops at "today's balance." This goes further — and reshapes by meter type.
Prepaid: live balance, a days-until-empty runway gauge, and a recharge recommender. Postpaid: amount due, a bill-cycle ring, and a next-bill projection from your real effective ₹/kWh.
Download your actual UPPCL bill, payment receipt, and arrears statement straight from the dashboard — no portal hop.
Per-day kWh, peak demand, apparent energy (kVAh), a derived power factor, estimated cost, and carbon — with CSV export.
Flags days where consumption is >1.5σ above the 30-day average, with a side panel explaining the math.
Power-factor and peak-vs-sanctioned-load gauges that flag surcharge / max-demand penalty risk, plus the official meter reading and identity.
Live status of every complaint from your phone, the full JE/AE/XEN officer chain, billing-office details, and a "Report outage" panel. English + हिन्दी.
Dark and light themes — follows your OS preference. All data is real; values are redacted.
Node 20+ (or Bun 1.1+) required. No Python.
# self-host git clone https://github.com/Harry-kp/uppcl-pro.git cd uppcl-pro bun install bun run dev # open localhost:3000
# or just use the hosted version # (same code, deployed on Vercel) open https://uppcl-pro.vercel.app # sign in with your UPPCL credentials # credentials are never stored or logged
Using Claude Code? Type
/setup
— skills are bundled in .claude/skills/.
Every user-specific identifier is discovered at runtime — nothing is hardcoded per DISCOM.
| DISCOM | Region | Status |
|---|---|---|
| PVVNL | West UP (Noida, Agra, Ghaziabad…) | ✅ tested end-to-end |
| MVVNL | Central UP | 🟡 same API, unverified |
| PuVVNL | East UP | 🟡 same API, unverified |
| DVVNL | South UP | 🟡 same API, unverified |
| KESCo | Kanpur | 🟡 same API, unverified |
On a non-PVVNL DISCOM? File a verification issue if it works — I'll flip the table to ✅.
Your credentials are never stored or logged. Here's exactly what happens.
Your credentials pass through our server over HTTPS to reach UPPCL's API. They exist in server memory only during the request — never written to disk, a database, or a log file.
The JWT from UPPCL is stored in sessionStorage — it lives only in your browser tab. Close the tab and it's gone. The server has no database, no analytics, no tracking of any kind.
Every line of code is on GitHub. The server is a stateless CORS proxy — read the ~90-line route handler yourself. Self-host with bun run dev for complete privacy.