Problem
Operator consoles are harder to review when telemetry, controls, logs, and safety logic are split across separate views.
archive case study
An industrial HMI and digital twin prototype for chemical process monitoring, interlocks, and operator control.
Quick technical review
Operator consoles are harder to review when telemetry, controls, logs, and safety logic are split across separate views.
All plant state lives in a server-side engine (Next.js route handlers): physics on a one-second tick, safety interlocks, deterministic Modbus frames from a documented register map, rule alarms and an audit trail. The browser only renders snapshots…
All plant state lives in a server-side engine (Next.js route handlers): physics on a one-second tick, safety interlocks, deterministic Modbus frames from a documented register map, rule alarms and an audit trail. The browser only renders snapshots streamed over Server-Sent Events and sends commands, so a refresh or a second tab shows the same plant. Telemetry, alerts and the audit trail persist to Firestore when configured, otherwise to a bounded in-memory store, and are served as history and CSV export.
Moves the simulation, interlocks and alarms from the browser to a server engine that streams snapshots over Server-Sent Events.
Start with the README screenshot and docs/architecture.md before reviewing implementation details.
Summaries reuse the project’s documented evidence. Review the complete case study for evaluation boundaries.
Evidence-led visual review
Concept art, dated captures and repository figures are identified separately.
Portfolio illustration
Original portfolio illustration. Diagrams are conceptual; verified methods and results appear in the linked case study. This is not an application screenshot.
Project proof
Last verified 2026-10-07
Problem and approach
Operator consoles are harder to review when telemetry, controls, logs, and safety logic are split across separate views.
All plant state lives in a server-side engine (Next.js route handlers): physics on a one-second tick, safety interlocks, deterministic Modbus frames from a documented register map, rule alarms and an audit trail. The browser only renders snapshots streamed over Server-Sent Events and sends commands, so a refresh or a second tab shows the same plant. Telemetry, alerts and the audit trail persist to Firestore when configured, otherwise to a bounded in-memory store, and are served as history and CSV export.
Interlocks are enforced on the server: the mixer cannot start with the discharge valve open, the valve cannot move while the rotor spins, and E-STOP always wins and is never rate limited. A denied command returns the operator-facing reason. Safety alarms are deterministic and raised on the tick the condition appears; optional Gemini commentary (Genkit) is layered on top near a limit, rate limited, time-boxed to 8 seconds, schema-validated and silently dropped on failure, so it never gates a safety decision.
ChemView stays in the archive as proof that the portfolio also includes stateful operator systems, not only analytics pages, and that an LLM can be added to one without being allowed to decide anything safety-relevant.
Architecture and analysis
Testing and validation
Operational value
How to inspect