A compact React + TypeScript simulation that models grid stability, cryptographic trust, firmware integrity, certificate health and network health for Distributed Energy Resources (DERs). The app is an operator training / exercise tool that presents alerts, a live metric graph, and domain-specific operator panels to respond to incidents.
This README covers how to run the project, the key features, and where to make common edits.
Live demo: The simulation is also deployed and available at https://chillpanda100.github.io/Q-READY/
You can open that URL to try the hosted version without running the app locally.
- Live metrics graph (time-series) showing:
- Grid Stability
- Cryptographic Trust
- Firmware Integrity
- Certificate Health
- Network Health
- Alerts panel with acknowledge/slide-away animations.
- Five domain-specific operator panels (split UI):
- DER / Grid Operations — control DERs to stabilize the grid.
- Cryptographic & Key Management (PKI) — rotate keys, renew certs, enforce PQ mode.
- Firmware & Device Integrity — patch, verify, rollback firmware.
- Network Operations — mitigate traffic, segment networks, restore routing.
- Incident Command & Governance — escalation, acknowledgement, emergency authorization.
- Operator actions take simulated time and may temporarily affect multiple metrics (tradeoffs are modeled).
- Enforce-PQ is a high-impact action with a cooldown and requires emergency authorization.
- Install dependencies:
npm install- Start the dev server with hot-reload:
npm run dev- Open the app in the browser (Vite will print the local URL, usually http://localhost:5173).
If you prefer to try the hosted demo instead of running locally, open the deployed site at: https://chillpanda100.github.io/Q-READY/.
- Use the title screen to start the simulation. The scenario timeline and alerts begin after you press Start.
Notes:
- The simulation samples metrics every 500ms and keeps a rolling buffer for the graph.
- Actions are simulated (delays, temporary effects); expect button spinners while actions execute.
To build a production bundle:
npm run buildTo preview the production build locally:
npm run previewsrc/App.tsx— main application state, metric sampling, scenario scheduling, andperformActionhandler that applies action effects and timers.src/components/MetricGraph.tsx— SVG/time-series rendering and zoom behavior.src/components/AlertsPanel.tsx— alerts list, acknowledge animation and timing.src/components/ActionPanel.tsx— top-level actions area (now composes separate domain panels).src/components/DERPanel.tsx,PKIPanel.tsx,FirmwarePanel.tsx,NetworkPanel.tsx,IncidentPanel.tsx— domain-specific button groups.src/data/scenario.ts— scheduled scenario events and their metric deltas/messages. Edit here to change the timed incidents.src/types/index.ts— shared TypeScript types used across the app.src/styles.css— global styling, panel layout, and animation rules.