Built by Richard Applegate · Grafana + Esper MDM

Device
Intelligence
Platform

A real-time monitoring and observability stack designed and built by Richard Applegate — tracking a nationwide fleet of Android point-of-sale devices from raw Esper API data to actionable dashboards.

0 Android Devices
0 Store Groups
5 min Sync Interval
24/7 Live Monitoring

End-to-end data pipeline

Every device heartbeat flows through a multi-threaded Python sync engine, lands in MariaDB, and surfaces inside Grafana dashboards in near real-time. The entire stack runs on a self-hosted Docker Compose setup inside the warehouse server.

☁️
Esper MDM Cloud API
joecoffee-api.esper.cloud
REST API
⚙️
Python Sync Engine
4-thread · Docker container
every 5 min
🗄️
MariaDB
esper_report database · UTC storage
self-hosted
📊
Grafana Dashboards
grafana.richardapplegate.io · Caddy + ZeroSSL
live
🐳
Docker Compose

All services — Grafana, MariaDB, Python sync scripts — orchestrated as containers with persistent volumes and auto-restart.

Infrastructure
🐍
Python Sync Scripts

esper_master_sync.py runs 4 threads in parallel: device status, hardware info, factory reset enrichment, and Slack formatting.

Data Pipeline
🗃️
MariaDB

Stores all device state, app versions, hardware specs, and 180-day historical data with auto-cleanup jobs.

Database
📈
Grafana

Dynamic dashboards with repeat panels, multi-value filter variables, and SQL-powered group/version/status dropdowns.

Visualization
🔒
Caddy + ZeroSSL

Reverse proxy with automatic HTTPS certificate management — zero manual cert renewal needed.

Security
N8N Automation

Workflow automations for daily Slack summaries, anomaly alerts, and device event notifications — all self-hosted.

Automation

Four production dashboards

v4.0.0v4.1.2v4.2.0v4.3.1v4.4.0latest

Version Tracking

Joe OS Versions

Dynamic repeat panels — one panel per app version — showing which devices are on each release. Driven by a version_select variable with multi-value filtering.

  • Repeat panel per version (auto-generated)
  • Multi-value version selector variable
  • Filter by group, status, or warehouse
RECENT EVENTS

Event Feed

Esper Event Feed

Live scrolling event log of device activity — boots, app installs, policy changes, and connectivity events — across the entire fleet.

  • Real-time device event ingestion
  • Filterable by device, group, or event type
  • 180-day retention with auto-cleanup

Always-on intelligence

Beyond dashboards, the platform actively notifies the team via Slack — so nothing falls through the cracks overnight.

🔄
N8N Daily Summary

Every morning at 6 AM Pacific, an N8N workflow queries MariaDB, builds a Block Kit Slack message, and posts fleet health stats to the Engineering channel — before anyone opens Grafana.

runs: 06:00 PT · cron
💬
Slack Block Kit Alerts

Rich formatted Slack messages with device counts, version breakdowns, and offline device lists. Delivered via HTTP webhook — bypassing unreliable Slack node limitations in N8N.

HTTP → webhook · Block Kit
4-Thread Sync Engine

Python scripts run four parallel threads: master device sync, hardware info sync, factory reset enrichment, and Slack formatter — completing the full cycle in under 2 minutes.

4 threads · 5 min cycle
🚨
Device & App Alerts

Grafana alert rules watch for devices going offline beyond threshold, version compliance dropping below targets, and suspicious hardware changes across the fleet.

Grafana alerting · webhook

Production-grade, start to finish

0 Total Devices Tracked

Including non-Joe-OS devices in the authoritative hardware table — every piece of hardware accounted for.

4 Live Dashboards

Fleet Intelligence, Joe OS Versions, Esper Event Feed, and Device & App Alerts — all production-ready.

180d Data Retention

Six months of historical device data with automatic nightly cleanup to keep the database lean and fast.

<2m Full Sync Time

Four parallel threads complete a full fleet sync in under two minutes, every five minutes around the clock.

100% Self-Hosted

Grafana, MariaDB, Python, N8N — everything runs on a self-hosted warehouse server. Zero cloud dependencies.

0 Blind Spots

Carrier detection, warehouse filter, UTC timezone handling, and semver-aware version sorting — every edge case covered.