Skip to content
Sergio Hernandez edited this page Jul 12, 2026 · 10 revisions

TrackHub

📖 Wiki Index

Page Description
Home Platform overview, architecture, and service inventory
Router Multi-protocol GPS provider integration and data sync flow
Technology Tech stack, PKCE authentication flow, and Clean Architecture
Database PostgreSQL schema, ER diagrams, and multi-tenant isolation
User Permissions Overview RBAC + Policy model, permissions matrix by screen

👤 User Guide (non-technical)

Page Description
User Guide index Step-by-step guides for operators, managers, and administrators — 🇪🇸 en español
Getting started · Roles & permissions · Glossary The basics
Live map · Trips & replay · Geofences · Reports · Alerts Day-to-day operation
Account management · System administration · GPS integration Administration
Troubleshooting When something goes wrong

TrackHub is an enterprise GPS asset-tracking integration platformthat connects to the web services of multiple GPS Tracking Providers, retrieves real-time and historical positioning data, and consolidates it into a single, user-friendly interface. This allows users to monitor multiple tracking systems in one place, simplifying fleet management and location tracking.


Platform Overview

graph TB
    subgraph Clients["TrackHub Clients"]
        direction LR
        laptop["🖥️ Web Browser"]
        tablet["📱 Tablet"]
        phone["📱 Mobile"]
    end

    subgraph TrackHub["TrackHub Platform"]
        direction LR
        api["Unified API Layer"]
    end

    subgraph Providers["GPS Tracking Providers"]
        p1["Platform 1<br/><i>e.g. GeoTab</i>"]
        p2["Platform 2<br/><i>e.g. GPS Gate</i>"]
        p3["Platform 3<br/><i>e.g. Traccar</i>"]
        pn["Platform N<br/><i>Any Provider</i>"]
    end

    laptop --> api
    tablet --> api
    phone --> api

    api -->|REST / GraphQL / SOAP| p1
    api -->|REST / GraphQL / SOAP| p2
    api -->|REST / GraphQL / SOAP| p3
    api -->|REST / GraphQL / SOAP| pn
Loading

TrackHub abstracts the complexity of each provider's unique API into a standardized data model, so clients always receive consistent position data regardless of the underlying GPS platform.


Architecture

TrackHub follows a microservices architecture built on .NET 10 and React.js, with each service owning a specific domain. All backend services communicate via GraphQL, while the Reporting service exposes a REST Minimal API for file downloads.

graph TB
    subgraph Frontend["Frontend"]
        web["TrackHub Web<br/><i>React.js</i>"]
    end

    subgraph Gateway["Nginx Reverse Proxy"]
        nginx["SSL Termination<br/>Path-based Routing"]
    end

    subgraph Backend["Backend Microservices"]
        auth["AuthorityServer<br/><i>OpenIddict / OAuth 2.0</i>"]
        sec["Security API<br/><i>GraphQL</i>"]
        mgr["Manager API<br/><i>GraphQL</i>"]
        rtr["Router API<br/><i>GraphQL</i>"]
        geo["Geofencing API<br/><i>GraphQL</i>"]
        rpt["Reporting API<br/><i>REST</i>"]
        trip["TripManagement API<br/><i>GraphQL</i>"]
    end

    subgraph Workers["Background Services"]
        sync["SyncWorker<br/><i>Position Sync</i>"]
    end

    subgraph Data["Data Layer"]
        db1[("TrackHubSecurity<br/><i>PostgreSQL</i>")]
        db2[("TrackHub<br/><i>PostgreSQL + PostGIS</i>")]
    end

    web --> nginx
    nginx --> auth & sec & mgr & rtr & geo & rpt

    auth --> db1
    sec --> db1
    sec -->|GraphQL| mgr
    mgr --> db2
    mgr -->|GraphQL| sec
    rtr -->|GraphQL| mgr
    rtr -->|GraphQL| geo
    geo --> db2
    rpt -->|GraphQL| rtr
    rpt -->|GraphQL| geo
    trip -->|GraphQL| geo
    sync -->|GraphQL| rtr
Loading

Service Inventory

Service Technology Protocol Database Purpose
TrackHub (Frontend) React.js, MUI Web UI with maps, dashboards, reports
AuthorityServer .NET 10, OpenIddict OAuth 2.0 TrackHubSecurity Identity provider, PKCE authorization
Security .NET 10, HotChocolate GraphQL TrackHubSecurity Users, roles, policies, permissions
Manager .NET 10, HotChocolate GraphQL TrackHub Accounts, transporters, devices, operators
Router .NET 10, HotChocolate GraphQL Multi-protocol GPS provider integration
Geofencing .NET 10, HotChocolate GraphQL TrackHub Geofence CRUD, spatial queries, events
Reporting .NET 10 Minimal APIs REST Excel report generation
TripManagement .NET 10, HotChocolate GraphQL Trip analysis and management
SyncWorker .NET 10 Worker Background position synchronization

Shared Library

All backend services depend on TrackHubCommon, a shared NuGet package that provides:

  • Custom CQRS mediator pipeline (commands, queries, behaviors)
  • OpenIddict JWT configuration
  • GraphQL client helpers with Polly resilience (retry + circuit breaker)
  • Authorization behavior with resource/action attribute checking
  • Logging, validation, caching, and rate-limiting behaviors
  • Domain event infrastructure

Key Features

  • Multi-provider integration — Connect any number of GPS providers simultaneously
  • Real-time tracking — Live map with device positions, speed, and status
  • Geofencing — Create and manage geofences with automatic event detection
  • Reporting — Position history, geofence events, and mileage reports (Excel export)
  • Multi-tenant — Full account isolation with hierarchical roles and policies
  • PKCE authentication — Secure OAuth 2.0 authorization for web and mobile clients
  • Role-based access control — Fine-grained permissions per resource and action

Clone this wiki locally