
Most IoT dashboards get welded to a single cloud. That’s fine—until costs spike, an ICCC requires a different stack, or your client mandates on-prem. This post shows how to build one dashboard that runs on any major cloud (or edge) without rewrites.
Context: Our team at Envitus (Alcodex) has delivered 14+ smart-city deployments in India, with exports to UAE, Qatar, Singapore, Vietnam, USA, Canada, Malaysia—ruggedized outdoor devices and ICCC integrations, backed by long term AMC contracts. The approach below is field-tested.
This means your payloads aren’t tied to AWS IoT “things,” GCP registries, or Azure device twins. You can still map to them later—but your app logic stays portable.
Pick a broker/queue abstraction you can swap:
/ingest/mqtt
→ normalize → publish to /events/*
.Result: Changing clouds = changing a Helm value, not rewriting the app.
Your dashboard will need time-series, metadata, and files (images/reports):
Use a repository pattern so reads/writes go through a clean interface. You can add managed cloud backends later without touching UI code.
Containerize services and ship with:
A single values file (URLs, creds, bucket names) lets you redeploy the same app across clouds.
A cloud-agnostic dashboard isn’t just portable—it’s usable by ops:
Tech stack: React/Next.js front-end, Grafana for quick trends if needed, RBAC via JWT/OAuth2, feature flags to toggle ICCC connectors per customer.
Treat each ICCC as an adapter:
Ship these adapters as independent services so your core doesn’t know (or care) which ICCC you’re sending to.
Sensors → Edge gateway (Modbus/RS485/BLE/LoRaWAN; store-and-forward) → Ingest service (HTTP/MQTT; CloudEvents) → Broker/Queue → Processor services (validation, enrichment, alerts) → Time-series DB + Postgres + S3-compatible storage → API gateway → React/Next.js dashboard + mobile → ICCC adapter(s) (optional). Platform: Kubernetes + Helm, Terraform IaC, OpenTelemetry, Prometheus/Loki/Tempo, Vault/Secrets.
Start portable (MQTT + Postgres/Timescale + S3-compatible). If a client demands native managed services later, you can swap implementations behind your interfaces without changing UI/UX. Portability today; optimizations tomorrow.
If you’d like, we can share a 1-page cloud-agnostic checklist you can map to your PLC/SCADA stack.