Skip to Content
FeaturesDashboard

Dashboard

The PiEEG Server dashboard is a browser-based real-time visualization tool served at http://<host>:1617.

Features

FeatureDescription
Real-time waveformsCanvas 2D, adaptive quality; time window 2–16 s, Y-scale ±50–500 µV
Signal quality badgesLive per-channel RMS with color feedback (green / yellow / red / gray)
Channel detail panelClick to expand: zoomed trace, FFT, band power bars, histogram, statistics
Spectral analysis256-point FFT in Web Worker; PSD (log dB / linear); band power bars δ θ α β γ
SpectrogramScrolling time-frequency heatmap (Turbo colormap, –60 → 0 dB)
Topographic mapIDW-interpolated scalp heatmap over 10-20 montage; selectable band metric
Statistics panel10 metrics per channel; sortable columns; CSV export
Filter previewLive Butterworth magnitude response with –3 dB reference
Session libraryBrowse, replay recordings; play/pause, seek, speed control (0.5×–2×); annotations
AI chat assistantBYO provider (OpenAI, Anthropic, Ollama, Groq, LM Studio); SSE streaming
Webhook panelVisual rule builder; POST/PUT/PATCH/GET; Authorization headers; IFTTT & Zapier
Webcam feedOptional video overlay
Performance monitorFPS, frame time, JS heap overlay
Update bannerVersion upgrade notification
ResponsiveDesktop: all 16 channels. Mobile: 4-channel subset

Keyboard Shortcuts

KeyActionKeyAction
SpaceToggle pauseVExperiences gallery
RToggle recordCToggle chat
FToggle FFTWToggle webhooks
GToggle spectrogramPToggle perf monitor
SToggle statsEscClose overlays
?Show shortcut help

EEG Frequency Bands

The dashboard color-codes all spectral data using standard EEG bands:

BandRangeColor
Delta (δ)0.5–4 Hz#8b5cf6 purple
Theta (θ)4–8 Hz#06b6d4 cyan
Alpha (α)8–13 Hz#22c55e green
Beta (β)13–30 Hz#f59e0b amber
Gamma (γ)30–100 Hz#ef4444 red

Tech Stack

LayerTech
FrameworkReact 19
BundlerVite 6
RenderingCanvas 2D (waveforms, spectra), Three.js (WebXR)
FFTPure-JS Cooley-Tukey radix-2 (256-point, Hanning window)
StateReact hooks + refs (no external state library)
StylingPlain CSS

The dashboard renders at 60 fps with zero React re-renders in the hot path — all waveform data flows through refs and Canvas directly.