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/ ├─ 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.