BOON PIN
Back to Projects

IoT DCIM Monitoring Platform

A modular, event-driven Data Centre Infrastructure Management platform — ingesting data from heterogeneous external systems, standardizing it through an ETL pipeline, and surfacing real-time dashboards, floorplans, alarms, and reports for operations teams.

NestJSReactJSTailwindCSSAnt DesignPostgreSQLTimescaleDBS3

Overview

DCIM HUB collects data from multiple external systems, normalizes it through a shared ETL pipeline, and stores it in a structured DCIM data model. From there, a suite of application modules — dashboards, floorplans, alarm management, reporting, and outbound data sinks — operate independently on the shared data layer. The platform is designed to be integration-first: new sources and sinks plug in without changing core business logic.

High-Level Architecture

Data Sources

Schneider EBO
REST API polling
IoT Devices
Sensor telemetry
Custom Systems
DB / API integration
Webhooks
Push-based ingestion
Pull / Push
DCIM HUB
Data Source Adapter
ETL Pipeline
Core Database
Application Layer
Serve / Push

Visualization

Dashboard
Real-time KPIs & charts
Floorplan
Interactive DC layout
Inventory Mgmt
Assets, racks, devices
Alarm & Reports
Monitoring & PDF/Excel

Data Sink

External DCIM
Peer DCIM systems
3rd Party
REST / Webhook push
Pull: API polling / DB queryPush: Webhook ingestionVisualization: internal users via JWT-auth APIData Sink: external systems via token-auth API

Architecture Layers

Data Source Layer

Ingress — external system integration

  • API polling (e.g. Schneider EBO API)
  • Database ingestion (PostgreSQL / TimescaleDB)
  • Webhook push-based ingestion
  • Connection management & health monitoring

ETL / Processing Layer

Transform raw data into DCIM format

  • Data mapping & normalization
  • Event classification (sensor, alarm, rack)
  • Data validation & deduplication
  • Trigger downstream events on the event bus

Core Data Layer

Central DCIM storage

  • Sites, suites, racks, assets, sensors
  • Alarm records & historical telemetry
  • Relational store — PostgreSQL
  • Time-series store — TimescaleDB

Application Layer

Business logic & APIs

  • Asset, sensor & alarm management
  • Floorplan & dashboard management
  • Reporting engine (PDF / Excel)
  • Data sink management & file storage

Visualization Layer

User-facing monitoring & management UI

  • Dashboard viewer & editor
  • Interactive floorplan viewer & editor
  • Alarm monitoring UI
  • Asset management & reporting UI

Data Sink Layer

Egress — outbound integrations

  • Real-time event-based push
  • Scheduled batch delivery
  • Sensor, alarm & rack change propagation
  • REST API & webhook output

Event-Driven Data Flow

The platform is event-driven at its core. Each stage emits typed events consumed independently by downstream modules, enabling loose coupling and real-time processing.

  1. 1

    Data Source

    External system pushes or is polled for new data.

  2. 2

    ETL

    Raw payload is mapped, classified, and validated.

  3. 3

    Event Bus

    Standardized DCIM events are emitted (sensor updated, alarm triggered, and more).

  4. 4

    Modules

    Application modules such as alarm management, dashboards, and reporting react independently.

  5. 5

    Data Sink

    Outbound handlers push updates to external DCIM or third-party systems.

API Boundary Design

Internal API

JWT / session authenticated · served to the frontend

  • GET/api/v1/sensors
    List & query sensor readings
  • GET/api/v1/alarms
    Active & historical alarms
  • GET/api/v1/racks
    Rack inventory & telemetry
  • POST/api/v1/data-sinks
    Create outbound sink config

External API

Token-based · scoped to a registered data sink

  • POST/external/data-sinks/:code/sensors
    Receive sensor payload
  • POST/external/data-sinks/:code/alarms
    Receive alarm event
  • POST/external/data-sinks/:code/racks
    Receive rack update
  • GET/external/data-sinks/:code/status
    Sink health check

Design Decisions

Event-Driven Core

Modules are loosely coupled via an event bus. Adding a new data source or sink does not require touching existing business logic — only a new handler is wired in.

Dual API Surface

Internal APIs (/api/v1/…) serve the frontend with full auth context. External APIs (/external/…) expose scoped, token-authenticated endpoints for third-party systems and data sinks.

PostgreSQL + TimescaleDB

Relational tables cover entities (racks, assets, alarms) while TimescaleDB handles high-volume sensor telemetry with native time-series compression and range queries.

Plug-in Architecture

New data source types, sink adapters, report templates, and dashboard widgets can be registered without modifying core modules — keeping the platform extensible as integrations grow.

Non-Functional Requirements

Performance

  • Stateless API servers for horizontal scaling
  • TimescaleDB for fast telemetry range queries
  • Queue-based ingestion workers (future)

Reliability

  • Health monitoring per data source connection
  • Deduplication in ETL prevents duplicate events
  • Scheduled & manual sink retry modes

Security

  • Internal APIs: JWT / session auth
  • External sink APIs: token-based access
  • RBAC with tenant/site-level isolation

Future Architecture Extensions

  • AI Automation on Dashboard/Floorplan Management
  • AI / RAG module for analytics & insights
  • Edge processing at IoT gateway level
  • Multi-tenant isolation for enterprise scale