Saltar al contenido
NavTrax Sistema operativo de expedición

Technology · Architecture · Whitepaper

The device is the source of truth.

NavTrax inverts the usual arrangement. The handset holds authoritative state; the server is a convergence point and a distribution mechanism. Every architectural decision below follows from that one, and this page is the index to the rest.

What this has to solve.

The architecture answers one question: what is authoritative when there is no network?

In a conventional client-server design the answer is "the server", and the client degrades to a cache with a spinner. Every capability that matters in the backcountry — search, routing, the assistant, the map, the group picture — is therefore unavailable in the conditions the product exists for.

NavTrax answers "the device". That makes synchronization a merge problem rather than a fetch problem, which is harder to build and the reason the rest of these pages exist.

The design, component by component.

Clients
A React and TypeScript web application, Flutter applications for iOS and Android, a Flutter administration client, and template surfaces on Android Auto and CarPlay. All read the same API and hold the same local state model.
Services
Independent services for routing, resupply, alerts ingestion, retrieval-augmented knowledge, audio classification and solar analysis, each with its own container and its own scaling profile.
Data layer
PostgreSQL as the store of record, tenant-partitioned, with Redis for cache and queue. Tile data is proxied and cached rather than stored.
Local state
SQLite on mobile, IndexedDB on web. The operation log, offline regions, the search index, the knowledge base and the model files all live here.
Transports
Cellular, Wi-Fi, mesh radio, LoRa store-and-forward, satellite and signed removable media, all converging on one ingest path.
Inference
TensorFlow Lite on the handset for classification, a model router for escalation, and retrieval over a curated corpus when a link exists.
Observability
Prometheus, Grafana and Alertmanager, with an in-app error log surfaced to administrators rather than only to us.

What this guarantees.

01

Offline-authoritative clients

Search, routing and inference all run locally.

02

Service isolation

A routing outage does not affect resupply or emergency escalation.

03

Multi-tenant by construction

Tenant partitioning in the schema, not in application filters.

04

One ingest path

Every transport converges on the same resolver and audit logger.

05

Deployable air-gapped

The same build, with no egress.

06

Observable in the field

Errors are visible to the operator, not only to the vendor.

Component inventory
ComponentTechnologyRole
Web clientReact, TypeScript, ViteFull application surface
Mobile clientsFlutteriOS and Android
Admin clientFlutterOrganization administration
Car surfacesCarPlay and Android Auto templatesSix driving-safe entries
APITypeScript service layerAuth, billing, layers, sync ingest
RoutingFastAPI over OSRM, Valhalla, OverpassNine endpoints
ResupplyFastAPI with vendor adaptersMulti-vendor logistics
AlertsPython ingestion serviceHazard and weather feeds
KnowledgeRetrieval serviceGrounded answers when online
AudioClassification pipelineWaveform to class
SolarInference serviceSite-level analysis
StorePostgreSQL, RedisRecord, cache, queue
Local storeSQLite, IndexedDBOp log, regions, models
ObservabilityPrometheus, Grafana, AlertmanagerPlus in-app error log

Traced, node by node.

Architecture overview — process graph Arrastra para desplazar · ⌘/Ctrl + scroll para hacer zoom · arrastra un nodo para reorganizar

Start with the sync fabric.

It is the page that explains why everything else is shaped the way it is.