IoT

Multi-Tenant IoT Platform

Devices, apps, and hardware — one platform

Role
Primary author
Period
2021 – 2025
Commits
600+ verified
Scale
5,000+ devices · 2M+ events/day

Overview

The IroTeam multi-tenant IoT platform: 5,000+ greenhouse and access-control devices publish telemetry over MQTT into an ASP.NET Zero (ABP) backend, with tenant-isolated data feeding a Nuxt web app, a React Native mobile app, and customer portals — 2M+ events a day at 99.8% uptime.

I am the primary author of the backend (IroTeam.IOT solution) and the Nuxt front-end. The web app consumes live telemetry directly over MQTT-over-websockets alongside a GraphQL/REST API, with streaming charts (chart.js streaming plugin, amCharts) and PWA support for on-site operators.

  • iroteam-iot / iroteam/backend/iotASP.NET Zero solution + Angular admin
  • iot-nuxtNuxt tenant web app (MQTT, Apollo, PWA)
  • iot-app · iot-package · greenhouseRN app + shared packages + greenhouse front

Tech stack

Backend

  • .NET
  • C#
  • ASP.NET Zero / ABP
  • MQTT broker
  • SQL Server

Web

  • Nuxt
  • Vue
  • MQTT.js
  • Apollo GraphQL
  • chart.js streaming
  • PWA

Mobile & admin

  • React Native
  • Angular
  • Firebase

Repository structure

Both real repositories — an ASP.NET Zero monorepo and the Nuxt telemetry app:

iroteam-iot + iot-nuxt
iroteam-iot/
├─ aspnet-core/
│  ├─ src/              IroTeam.IOT.* ABP layers
│  ├─ test/ · docker/ · build/
│  ├─ IroTeam.IOT.All.sln
│  ├─ IroTeam.IOT.Web.sln
│  └─ IroTeam.IOT.Mobile.sln
├─ angular/             admin panel (NSwag clients)
└─ ui-tests/            Jest suite
iot-nuxt/
├─ pages/zone/          per-zone dashboards
├─ components/chart/    streaming charts
├─ store/ · plugins/ · middleware/
└─ nuxt.config.js       mqtt · apollo · pwa · firebase

Design patterns

  • Multi-tenancy (ABP)

    Tenant isolation comes from the ABP layer — every device, zone, and reading is tenant-scoped at the data level.

  • MQTT pub/sub

    Devices publish telemetry topics; the backend ingests them and the Nuxt app subscribes directly over MQTT-websockets for live charts.

  • Layered DDD (ASP.NET Zero)

    Application / Core / EF Core layering with Web, Mobile, and All solution heads.

  • Offline-capable PWA

    The operator web app installs as a PWA with Firebase push for alarms.

System design

Multi-Tenant IoT Platform system diagram