Skip to content

An end-to-end real-time asset tracking architecture built with .NET, RabbitMQ, SignalR, Angular, and CesiumJS — designed for high-frequency telemetry ingestion and 3D geospatial visualization.

Notifications You must be signed in to change notification settings

bsozer06/critical-asset-tracking-platform

Repository files navigation

Critical Asset Tracking Platform

CI

A platform for real-time tracking and visualization of assets (vehicles, aircraft, drones, etc.). Open for contributions and improvements.


What's Included

  • Backend API — Handles telemetry, validates data, and streams updates.
  • Frontend Web App — Modern dashboard with a 3D map and live asset panel.
  • Simulator — Generates test data for all asset types.
  • Monitoring Stack — Prometheus metrics and Grafana dashboards for system observability.

Architecture


Quick Start

With Docker (Recommended)

cd backend
docker compose up --build

Local Development

  1. Backend
cd backend/Api
dotnet restore
dotnet build
dotnet run
  1. Frontend
cd frontend/critical-asset-frontend
npm install
npm start
  1. Simulator
cd simulator/CriticalAssetSimulator
dotnet run

4. How the Data Flows (The Pipeline)

  1. Generate
    The Simulator produces telemetry data and publishes it to a RabbitMQ exchange.

  2. Process
    The Backend consumes messages, validates payloads, and applies business rules.

  3. Broadcast
    Processed telemetry is pushed to all connected clients via SignalR.

  4. Render
    The Angular + Cesium application updates 3D asset models in real time.

  5. Monitor
    Prometheus collects system metrics, and Grafana provides visual dashboards for observability.


Demo

Platform Demo


Features

  • Real-time updates via SignalR
  • Interactive Cesium 3D map
  • Card-based telemetry panel with icons and color badges
  • Zoom to asset/all features
  • Geofence drawing and alerts
  • Responsive, mobile-friendly design
  • Data integrity checks (CRC32)
  • System monitoring with Prometheus metrics and Grafana dashboards

Configuration

  • Simulator: simulator/CriticalAssetSimulator/config.json — asset counts, location, output type
  • Backend: backend/Api/appsettings.json — RabbitMQ and API settings
  • Frontend: frontend/critical-asset-frontend/src/environments/environment.ts — API and Cesium settings

CI/CD

See CI/CD documentation for pipeline details.


Contributing

Everyone is welcome! Please:

  • Use feature branches, PRs, and code review.
  • Add unit tests for your changes (see frontend and backend test instructions below).
  • Keep Cesium assets updated and respect their Apache 2.0 license headers.
  • See frontend/critical-asset-frontend/README.md for frontend tests, and use dotnet test for backend.

License

  • Cesium assets: Apache 2.0 (see headers in frontend/critical-asset-frontend/src/assets/cesium)
  • Project code: See LICENSE file if present

Troubleshooting

Telemetry missing in the UI:

  • Ensure backend and frontend are running and hub URLs match
  • Check backend logs for errors
  • Verify RabbitMQ exchange/queue exist with correct permissions
  • Default RabbitMQ: localhost:5673, exchange: catp.exchange, queue: catp.telemetry.queue

Cesium errors:

  • Check static assets are loaded
  • Verify CESIUM_BASE_URL in index.html and environment.ts

More Info

About

An end-to-end real-time asset tracking architecture built with .NET, RabbitMQ, SignalR, Angular, and CesiumJS — designed for high-frequency telemetry ingestion and 3D geospatial visualization.

Topics

Resources

Stars

Watchers

Forks

Packages