Skip to main content

Apollon GPS Tracking System

Apollon is a real-time GPS tracking system for logistics and cargo, built on Peplink router hardware. It provides REST, GraphQL and WebSocket APIs for live position tracking, trip management, AIS vessel tracking, water level monitoring and AIS watchlist proximity alerts.

Architecture

┌──────────────┐
│ Peplink │
│ Router │
└──────┬───────┘

┌─────────────┐ ┌──────┴───────┐ ┌────────────────┐
│ Next.js │────▶│ Rust API │────▶│ PostgreSQL │
│ Frontend │ │ (Actix-web) │ │ (Relational) │
└──────┬──────┘ └──────────────┘ └────────────────┘
│ ┌────────────────┐
│ WebSocket (direct) │ TimescaleDB │
└─────────────────────────────────▶│ (GPS Series) │
└────────────────┘

Data Flow:

  • Browser → fetch() → Next.js API Routes → gql() → Rust API /v1/gql
  • Browser → WebSocket → Rust API /v1/ws (direct, no proxy)

Core Components

ComponentTechnologyPurpose
APIRust (Actix-web, sqlx, async-graphql)REST + GraphQL + WebSocket server
WebNext.js 16, React 19, shadcn/ui, Tailwind CSS 4Frontend with live map and trip management
Shared API@elcto/apollon-api (TypeScript)GraphQL client, WebSocket client, types
Shared UI@elcto/apollon-ui (React)Map, Spinner, ThemeToggle components
Shared Logger@elcto/apollon-logger (TypeScript)Structured logger with Sentry integration
DatabasePostgreSQL 18Clients, trips, categories, contacts
Time-SeriesTimescaleDBGPS locations with hypertable compression
GPS SourcePeplink Router APIHardware GPS with automatic token auth

Monorepo Structure

shared/
api/ @elcto/apollon-api — GraphQL client, WebSocket, types
ui/ @elcto/apollon-ui — Map, Spinner, ThemeToggle
logger/ @elcto/apollon-logger — Structured logger, Sentry binding
platform/
api/ Rust API (12 crates)
web/ Next.js 16 frontend
docs/ Documentation (Docusaurus)

Crate Structure

The Rust API is organized as a Cargo workspace with 12 crates:

CratePurpose
apollon-commonShared types, error handling, API response format
apollon-configTOML + env var configuration loading
apollon-dbDatabase models, sqlx queries, migrations
apollon-restREST handlers, middleware (auth, rate limit, security)
apollon-graphqlGraphQL schema, queries, mutations
apollon-websocketWebSocket server, GPS/Speed/Trips/Vessels/Watchlist channels, AIS client
apollon-peplinkPeplink router client with token management
apollon-forwardingGPS data forwarding to external services
apollon-pegelonlinePegelonline water level client with caching
apollon-storageGeneric file storage (upload, serve, delete)
apollon-watchlistAIS MMSI watchlist with proximity matching and alerts
apollon-telemetryTracing and Sentry integration
apiMain binary, server startup, background loops

API Protocols

  • REST — Endpoints under /v1 with OpenAPI documentation
  • GraphQL — Full schema at /v1/gql with GraphiQL IDE
  • WebSocket — 5 channels at /v1/ws: speed, gps, trips, vessels, watchlist