Mine Pile Visualizer — Stockpile & Circuit Topology Explorer

Published:

A local-first visualization platform for exploring mining circuit topology, live material state, stockpile 3D structure, and historical profiler data. Built on Next.js 16 with React 19 and TypeScript, it consumes app-ready cached outputs from a mineral tracking simulation engine and presents them through four dedicated operator workspaces.

Business context

Mineral tracking systems generate vast amounts of operational data — belt block compositions, stockpile voxel states, quality distributions, temporal evolution. The raw data exists, but operators and process engineers need structured, route-specific views to answer operational questions: What is the current state of each stockpile? How has the feed quality evolved over the last shift? Where in the circuit are quality deviations occurring?

Key Performance Indicators — Process impact

KPIBaselineWith Mine Pile VisualizerImpact
State visibilityTabular reports, delayedInteractive 2D/3D views, real-time cacheSpatial understanding of material state
Decision contextFragmented data sourcesFour dedicated workspaces, one per questionFocused operator workflows
Historical reviewManual data extractionProfiler workspace with snapshot navigationShift-to-shift trend analysis
Circuit understandingStatic diagramsInteractive topology with flow roles and anchorsLive operational context

Four operator workspaces

Circuit

Structural reading of the modeled mining area. Interactive 2D/3D circuit topology diagram showing stages, nodes, edges, flow roles, and anchor inventory. Built with @xyflow/react and dagre for automatic graph layout.

Live

Dense current-state inspection. Belt block compositions, stockpile voxel rendering (3D with @react-three/fiber + instancedMesh), mass histograms, quality distributions. Answers: What is happening right now?

Profiler

Historical summarized reading. Snapshot navigation through time, quality time-series, delta comparisons between snapshots. Answers: How has this evolved over the shift/day/week?

Simulator

Pile-centered discharge reading. Central pile structure, discharge routes, grouped reclaim sequences. Answers: Where does the material go when we extract?

Data contract — Apache Arrow IPC:
Pile cells: (ix, iy, iz, massTon, timestamps, quality columns)
Belt blocks: (position, massTon, timestampOldest/Newest, qualities)
Dense binary format for sub-second loading of voxel datasets with thousands of cells

Technical stack

  • Framework: Next.js 16 (App Router) + React 19 + TypeScript 5
  • 2D Diagrams: @xyflow/react + dagre for circuit topology
  • 3D Rendering: @react-three/fiber + Three.js + drei for stockpile voxels
  • Data Format: Apache Arrow IPC for dense block/cell datasets
  • Validation: Zod 4 for runtime contract enforcement
  • Testing: Vitest (unit/component) + Playwright (E2E)
  • Local-first: No external services — reads app-ready cache from local filesystem

Live application

Mine Pile Visualizer — 3D stockpile voxels with categorical quality

Mine Pile Visualizer — 3D voxels with numeric quality coloring

Recent updates

v1.00.001 (April 2026): Folded the Stockpiles workspace into Live (Piles/VPiles). Resolved 3D voxel rendering issue — moved from fragile instance-color to explicit merged visible-geometry approach.

View on GitHub