Platform
Architecture
The event spine every feature reads from.
LemursEye is one deployable platform built around a stream of vehicle events. Every feature, from the live map to the digest to the ERP connector, is a consumer of that stream, which is why a new module never needs a new integration.
Components
| Component | Role |
|---|---|
| Bridge | A Traccar server that decodes 200+ tracker protocols into one canonical telemetry record and publishes it |
| Kafka | The event spine: decoded telemetry in, enriched events out |
| Pipeline | Enriches telemetry (device to vehicle to tenant, status), segments trips and stops, evaluates rules, keeps live state |
| Core | The API, tenancy, settings, money, digest, modules; what the console and the app talk to |
| TimescaleDB | Positions as a time-series hypertable; trips, stops, alerts, settings |
| Valkey | Latest position per vehicle for the live map; alert cooldowns; the live pub/sub channel |
| Keycloak | Identity: login, tokens, the tenant claim |
| Edge | TLS termination and routing for the console, API, socket and login |
Multi-tenancy
Each customer is a tenant. The tenant travels inside the signed login token and every database query is scoped by row-level security at the database itself, not only in application code. A user without a tenant claim is refused.
Native images
Core and pipeline run as native executables (GraalVM), starting in about a second and using tens of megabytes at rest. Images are built by CI on a tag and pulled by the server.