Pre-hardware grid-readiness cockpit for EV charging, transformer loading, battery dispatch, virtual grid signals, telemetry validation, and engineering report generation.
VoltPilot is a software-first electrical and electronics engineering portfolio project. It helps a facility answer a practical question before buying chargers, meters, batteries, or transformer upgrades:
How many EV charging sessions can this site support safely, where does electrical risk begin, and what is the next engineering action?
The app runs without physical hardware, models small-facility scenarios, simulates flexible-load orchestration, estimates transformer loading, solves the maximum safe EV concurrency before hardware purchase, and validates simulated dispatch against mock or measured telemetry samples.
EV charging, cooling demand, and small distributed resources make local grid flexibility more valuable. Many small facilities do not have a practical way to estimate transformer stress, flexible-load potential, or whether a control strategy will create measurable value.
VoltPilot demonstrates that workflow in software first. It works today without hardware, but its telemetry and public-data contracts can later be connected to ESP32, MQTT, smart-plug data, or live grid-data providers.
Most energy tools focus on monitoring, general optimization, or operating installed EV chargers. VoltPilot focuses on the decision before hardware is purchased:
How many EV charging sessions can this facility support safely, where does transformer risk begin, and should the next move be a charging policy, a battery bridge, or a transformer upgrade?
The answer is packaged as a Readiness Passport:
- Max Safe EV Solver: estimates the largest EV concurrency that stays inside transformer kVA and overload limits.
- First-risk threshold: shows the EV count where the facility leaves the safe pre-hardware envelope.
- Storage bridge estimate: approximates the battery energy needed to hold the requested plan inside the managed stress band.
- Transformer upgrade target: recommends the next standard kVA rating when the requested plan exceeds the envelope.
- Control-mode envelope: compares uncontrolled, tariff-aware, orchestrated, and optimizer strategies on the same facility.
- Exportable proof: JSON, CSV, Markdown report, and UI all use the same tested scenario model.
- Pre-installation EV capacity can be estimated without buying hardware first.
- Transformer risk can be translated into a practical decision: install as-is, apply a managed charging policy, add a battery bridge, or plan an upgrade.
- Simulated scenarios and measured telemetry can be compared with the same public API contract.
- A portfolio energy project can show electrical engineering reasoning, software delivery, test coverage, and product thinking in one repository.
flowchart LR
A["Facility profile"] --> B["Max Safe EV Solver"]
B --> C["Readiness Passport"]
D["Battery mode"] --> B
E["Tariff and grid signal"] --> B
F["Telemetry CSV"] --> C
C --> G["Install as-is"]
C --> H["Managed charging policy"]
C --> I["Battery bridge or transformer upgrade"]
- English dashboard and operator cockpit
- Facility profiles for apartment blocks, workshops, cafes, and electronics labs
- EV concurrency, tariff plan, control strategy, storage, analysis horizon, and scenario preset controls
- URL-shareable scenarios and browser-local saved scenarios
- 24-hour or 7-day load profile with uncontrolled baseline, mock/imported telemetry, and transformer limit
- kW, kVA, current, power factor, overload-hour, battery SoC, cost, carbon, and engineering-confidence KPIs
- Readiness Passport with max safe EV sessions, first-risk threshold, storage bridge estimate, and transformer upgrade target
- EV capacity envelope across uncontrolled, tariff-aware, orchestrated, and optimizer strategies
- Strategy comparison for uncontrolled, tariff-aware, orchestrated, and constraint-optimized operation
- Lightweight optimizer for peak shaving, tariff exposure, battery SoC, and transformer headroom
/api/grid-signalvirtual grid signal API- EPIAS, ENTSO-E, Electricity Maps, and Ember adapter-ready provider model
- Source status panel with credential names, refresh notes, granularity, and documentation links
/api/scenarioJSON and CSV export/api/telemetrymeasured-vs-simulated comparison API- Telemetry CSV import in the cockpit with template download
/api/reportdownloadable Markdown engineering report- Vitest coverage for the simulation engine, telemetry, CSV, grid signal, and API behavior
- GitHub Actions CI for test, typecheck, lint, and build
- Select a facility profile, EV count, tariff plan, battery mode, and control strategy.
- Check the Readiness Passport for max safe EV sessions, first-risk threshold, storage bridge, and transformer upgrade recommendation.
- Compare uncontrolled, tariff-aware, orchestrated, and optimizer strategies.
- Import telemetry CSV or use mock telemetry to compare measured-vs-simulated behavior.
- Export JSON, CSV, or a Markdown engineering report for documentation.
The project starts with virtual data instead of physical measurement hardware:
- EPIAS Transparency Platform is modeled as the primary official adapter target for Turkish market, generation, consumption, and transmission data.
- ENTSO-E Transparency Platform is kept as an alternative adapter target for European power-system data.
- Electricity Maps is modeled as an optional adapter for carbon intensity, electricity mix, load, and price signals.
- Ember is modeled as an optional adapter for monthly and yearly demand, generation, emissions, and carbon-intensity datasets.
- If no API keys are configured, the app generates deterministic 24-hour demo data for Turkey. The demo stays reliable and the tests do not depend on the internet.
Sources: EPIAS technical documentation, ENTSO-E Transparency Platform, Electricity Maps API, Ember API.
VoltPilot does not currently poll live external APIs. The default grid signal is deterministic virtual data generated for the requested date, so every run is reproducible and CI-safe.
When live adapters are implemented, refresh behavior should be provider- and dataset-specific:
- EPIAS: Official Turkish market and transparency datasets are published through EPIAS services; refresh cadence depends on the selected dataset and market process.
- ENTSO-E: Transparency Platform data is exposed through multiple channels, including REST API and file/subscription workflows; publication timing and resolution depend on the data item.
- Electricity Maps: API endpoints default to hourly temporal granularity and can support 5-minute, 15-minute, hourly, and aggregated historical granularities where available.
- Ember: Monthly Electricity Data is updated twice per month, with releases in the first and third weeks of the month.
- Next.js App Router
- TypeScript
- Tailwind CSS
- Recharts
- Vitest
- Scenario simulation engine
- Virtual grid signal API
- Stateless telemetry comparison API
- CSV and JSON exports
pnpm install
pnpm devOpen http://localhost:3000.
pnpm test
pnpm typecheck
pnpm lint
pnpm build
pnpm checkScenario JSON:
/api/scenario?siteType=workshop&strategy=orchestrated&batteryMode=small&tariffPlan=tou&evCount=4
Readiness Passport stress case:
/api/scenario?siteType=apartment&strategy=baseline&batteryMode=none&tariffPlan=critical&evCount=24&analysisDays=7
7-day optimizer scenario:
/api/scenario?siteType=workshop&strategy=optimizer&batteryMode=medium&tariffPlan=critical&evCount=8&analysisDays=7
Scenario JSON with grid signal:
/api/scenario?siteType=workshop&strategy=orchestrated&batteryMode=small&tariffPlan=tou&evCount=4&gridProvider=epias&gridDate=2026-05-06
Scenario CSV:
/api/scenario?siteType=workshop&strategy=orchestrated&batteryMode=small&tariffPlan=tou&evCount=4&format=csv
Virtual grid signal:
/api/grid-signal?provider=demo&date=2026-05-06
Telemetry comparison:
curl -X POST http://localhost:3000/api/telemetry \
-H "Content-Type: application/json" \
-d '{
"mode": "mock",
"scenario": {
"siteType": "workshop",
"strategy": "orchestrated",
"batteryMode": "small",
"tariffPlan": "tou",
"evCount": 4
}
}'Engineering report:
/api/report?siteType=workshop&strategy=optimizer&batteryMode=medium&tariffPlan=critical&evCount=8&analysisDays=7&gridProvider=epias&gridDate=2026-05-06
The app works without these values. If credentials are added later, live adapters can be implemented while keeping the same API contract.
EPIAS_TGT=
ENTSOE_TOKEN=
ELECTRICITY_MAPS_TOKEN=
EMBER_API_KEY=app/api/scenario/route.ts- scenario JSON and CSV exportapp/api/grid-signal/route.ts- virtual grid signal endpointapp/api/telemetry/route.ts- telemetry validation and comparisonapp/api/report/route.ts- Markdown engineering report exportcomponents/energy- cockpit UI and dashboard panelssrc/lib/energy/flexgrid.ts- simulation enginesrc/lib/energy/grid-signal.ts- virtual grid signal coresrc/lib/energy/telemetry.ts- measured-vs-simulated comparison coresrc/lib/energy/report.ts- report generation coretests- model, telemetry, CSV, grid signal, and API testsdocs- architecture, telemetry, validation, API, virtual-data, and roadmap notesdocs/LINKEDIN_POST.md- LinkedIn launch copy and visual notes
MIT. Copyright (c) 2026 Emre Bulut.