# FleetNow A single-file map console that **merges live vehicle positions and historical trips** into one view for the Fireside Communications / Tracksolid fleet. - Land on the **live fleet** — markers carry the **department (cost-centre) colour**, a heading arrow, the plate tail, and a hover popup (status, driver, reverse-geocoded address, heading, odometer, last fix, source). Markers **scale with the zoom level**. Shape encodes recency so stakeholders read activity at a glance: - **● circle** (full colour + heading arrow) — moving right now - **■ square** (pastel colour, no arrow, ~half the size of a moving marker) — active within the last 24h, now stopped - **grey ●** — offline (no fix in 24h) - **Filters** (bottom-right card) apply to the live map *instantly*: - **Number plate** — multi-select, sorted A→Z; picking a vehicle auto-fills its cost centre + city. - **Cost centre** and **Assigned city** — narrow the live fleet (and the KPI bar recomputes to match). - **Time** (Today / 1 week / 1 month / Custom) — applies to **trips**, not live. - Drill into history: click a vehicle's dot → **Show trips**, or set plate / cost centre / city + period and hit **Show trips** for a fleet-wide pull. The map switches to **seq-coloured trip routes** with start/end markers and a click-to-animate replay; the **● Live** pill returns to the live snapshot. Live: ## Architecture The whole app is **one self-contained `index.html`** (inline CSS + JS; MapLibre GL JS loaded from a CDN). It has no build step and no local assets. It reads from the existing dashboard read-API — it does **not** talk to the database directly. ``` index.html → the entire SPA Dockerfile → bakes index.html into an nginx:alpine image (port 80) nginx.conf → static serve + /healthz + no-cache on index.html ``` ### Backend it depends on `const API_BASE = 'https://fleetapi.rahamafresh.com';` (top of the `