30 lines
995 B
Markdown
30 lines
995 B
Markdown
# Architecture
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
phone["Android driver app"] -->|POST /api/v1/locations| api["CargoRadar API"]
|
|
api --> latest["latest-locations.json"]
|
|
api --> history["locations.jsonl"]
|
|
web["Control web"] -->|GET latest/history| api
|
|
api -->|SSE /api/v1/events| web
|
|
```
|
|
|
|
## MVP Data Flow
|
|
|
|
1. The Android app starts a foreground location service.
|
|
2. The service uploads location JSON with `X-Device-Token`.
|
|
3. The server validates the token against `drivers.json`.
|
|
4. The server stores the newest location per driver and appends history.
|
|
5. The control web reads the latest positions and listens for SSE updates.
|
|
|
|
## Storage
|
|
|
|
The MVP uses simple files:
|
|
|
|
- `drivers.json`: driver registry and device tokens.
|
|
- `latest-locations.json`: current position by driver.
|
|
- `locations.jsonl`: append-only location history.
|
|
|
|
This keeps the first version easy to deploy on Synology NAS. PostgreSQL with
|
|
PostGIS is the planned upgrade path once route/history queries become central.
|